Hi there,
Trying to chase down my sudden keyring / tmpfile socket death
syndrome ;-) I poked at the tmpfile cleanup code.
With this debug patch:
diff --git a/src/tmpfiles.c b/src/tmpfiles.c
index 21bf44d..92082e4 100644
--- a/src/tmpfiles.c
+++ b/src/tmpfiles.c
@@ -133,14 +133,19 @@ static void load_unix_sockets(void) {
truncate_nl(line);
+ fprintf (stderr, "line '%s'\n", line);
if (strlen(line) < 53)
continue;
p = line + 53;
+ fprintf (stderr, "line[53] '%s'\n", p);
+
p += strspn(p, WHITESPACE);
p += strcspn(p, WHITESPACE);
p += strspn(p, WHITESPACE);
+ fprintf (stderr, "line[53] '%s'\n", p);
+
if (*p != '/')
continue;
@@ -149,6 +154,7 @@ static void load_unix_sockets(void) {
path_kill_slashes(s);
+ fprintf (stderr, "set_put '%s'\n", s);
if ((k = set_put(unix_sockets, s)) < 0) {
free(s);
I got this output:
line 'f2f8b940: 00000002 00000000 00010000 0001 01
42673259 /tmp/.X11-unix/X0'
line[53] ' /tmp/.X11-unix/X0'
line[53] ''
line 'f1b1fdc0: 00000002 00000000 00010000 0001 01
42674940 /tmp/.ICE-unix/9731'
line[53] ' /tmp/.ICE-unix/9731'
line[53] ''
line 'f2f56040: 00000002 00000000 00010000 0001 01
796 /var/run/dbus/system_bus_socket'
line[53] 'ar/run/dbus/system_bus_socket'
line[53] ''
line 'f2f6eb80: 00000002 00000000 00010000 0001 01
42675813 /tmp/keyring-cNhiNs/control'
line[53] ' /tmp/keyring-cNhiNs/control'
line[53] ''
...
ie. nothing going into the hash; with the attached patch as a fix, and
an additional:
@@ -149,6 +142,7 @@ static void load_unix_sockets(void) {
path_kill_slashes(s);
+ fprintf (stderr, "set_put '%s'\n", s);
if ((k = set_put(unix_sockets, s)) < 0) {
free(s);
I get:
set_put '/tmp/.X11-unix/X0'
set_put '/tmp/.ICE-unix/9731'
set_put '/var/run/dbus/system_bus_socket'
set_put '/tmp/keyring-cNhiNs/control'
set_put '/tmp/keyring-cNhiNs/ssh'
set_put '/tmp/keyring-cNhiNs/gpg'
set_put '/tmp/keyring-cNhiNs/pkcs11'
set_put '/tmp/.esd-1000/socket'
set_put
'/home/michael/.pulse/e840e2e044504d5071681f0d00000658-runtime/native'
set_put
'/home/michael/.pulse/e840e2e044504d5071681f0d00000658-runtime/dbus-socket'
set_put '/tmp/dbus-QcEdBn2bFr'
set_put '/tmp/gdm-session-WfnKDMpY'
set_put '/tmp/.X11-unix/X0'
set_put '/var/run/acpid.socket'
...
which I was expecting.
Hope that's ok: my first prototype systemd patch ;-)
Could this potentially explain my problem ?
All the best,
Michael.
--
[email protected] <><, Pseudo Engineer, itinerant idiot
>From 6b148412543b813dc30c2d778375b41c08e45614 Mon Sep 17 00:00:00 2001
From: Michael Meeks <[email protected]>
Date: Wed, 11 Jan 2012 12:31:40 +0000
Subject: [PATCH] simplify and fix /proc/net/unix parsing
---
src/tmpfiles.c | 11 ++---------
1 files changed, 2 insertions(+), 9 deletions(-)
diff --git a/src/tmpfiles.c b/src/tmpfiles.c
index 19a7c08..65da6fb 100644
--- a/src/tmpfiles.c
+++ b/src/tmpfiles.c
@@ -135,15 +135,8 @@ static void load_unix_sockets(void) {
truncate_nl(line);
- if (strlen(line) < 53)
- continue;
-
- p = line + 53;
- p += strspn(p, WHITESPACE);
- p += strcspn(p, WHITESPACE);
- p += strspn(p, WHITESPACE);
-
- if (*p != '/')
+ /* the numeric fields are followed by an absolute path beginning with '/' */
+ if (line[0] == '\0' || !(p = strchr (line, '/')))
continue;
if (!(s = strdup(p)))
--
1.7.3.4
_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel