Comment 71 for bug 36581

Revision history for this message
In , Chris (chris-redhat-bugs) wrote :

gamin-0.0.14-1, current rawhide, x86_64 dual opteron.
Output from SIGUSR2 shows it's looping through the following list of
files. Looks like a poll_file loop is stuck. Quick source read
points at gam_poll_scan_directory_internal and the for loop:

  for (l = children; l; l = l->next) {

Poll: poll_file for
/usr/share/applications/gnome-accessibility.desktop called
 at 1097770113 delta 0 : 0 Poll: poll_file
/usr/share/applications/gnome-accessibility.desktop unchanged
1097700841 0 : 1097700841 0
Poll: poll_file for
/usr/share/applications/redhat-neat-control.desktop called at
1097770113 delta 0 : 0
Poll: poll_file /usr/share/applications/redhat-neat-control.desktop
unchanged
1096989180 0 : 1096989180 0
Poll: poll_file for
/usr/share/applications/redhat-rhn-up2date-config.desktop called
 at 1097770113 delta 0 : 0
Poll: poll_file
/usr/share/applications/redhat-rhn-up2date-config.desktop unchanged
1095979273 0 : 1095979273 0

And gdb confirms this:

(gdb) bt
#0 0x0000002a95721945 in ?? ()
#1 0x0000000000404701 in poll_file (node=0x523b40) at stat.h:366
#2 0x0000000000404b46 in gam_poll_scan_directory_internal (dir_node=0x0,
    exist_subs=0x0, scan_for_new=1) at gam_poll.c:446
#3 0x0000000000404f33 in gam_poll_scan_callback (data=0x5303d0)
    at gam_poll.c:550
#4 0x00000036cc52942b in ?? ()
(gdb) list gam_poll.c:446
441 }
442 children = gam_tree_get_children(tree, dir_node);
443 for (l = children; l; l = l->next) {
444 node = (GamNode *) l->data;
445
446 fevent = poll_file(node);
447
448 if (gam_node_is_dir(node) &&
449 gam_node_has_flag(node, FLAG_NEW_NODE) &&
450 gam_node_get_subscriptions(node)) {

(gdb) print l
$1 = (GList *) 0x51ea60
(gdb) print l->next
$2 = (GList *) 0x523920
(gdb) print l->next->next
$3 = (GList *) 0x51ea78
(gdb) print l->next->next->next
$4 = (GList *) 0x51ea60
(gdb) p children
$5 = (GList *) 0x53ddd0
(gdb) p *(GamNode *)l->data
$6 = {path = 0x523c10
"/usr/share/applications/redhat-neat-control.desktop", subs = 0x0,
data = 0x530210, data_destroy = 0x404380 <gam_poll_data_destroy>,
flags = 0, node = 0x515f78, is_dir = 0}

This list is not NULL terminated.