Program received signal SIGSEGV, Segmentation fault.
g_str_hash (v=0x0) at /build/buildd/glib2.0-2.31.4.tested/./glib/ghash.c:1661
1661 /build/buildd/glib2.0-2.31.4.tested/./glib/ghash.c: No such file or directory.
in /build/buildd/glib2.0-2.31.4.tested/./glib/ghash.c
(gdb) bt
#0 g_str_hash (v=0x0)
at /build/buildd/glib2.0-2.31.4.tested/./glib/ghash.c:1661
#1 0xb7374a38 in g_hash_table_lookup_node (hash_return=<synthetic pointer>,
key=0x0, hash_table=0x8783ee8)
at /build/buildd/glib2.0-2.31.4.tested/./glib/ghash.c:385
#2 g_hash_table_lookup (hash_table=0x8783ee8, key=0x0)
at /build/buildd/glib2.0-2.31.4.tested/./glib/ghash.c:1058
#3 0xb50493b9 in gdu_pool_get_by_object_path (pool=0x832acf0, object_path=0x0)
at gdu-pool.c:2217
#4 0xb50479b6 in device_changed_signal_handler (proxy=0x87e4090,
object_path=0x0, user_data=0x832acf0) at gdu-pool.c:1528
#5 0xb7444f8a in g_cclosure_marshal_VOID__POINTER (closure=0x87ce5a0,
return_value=0x0, n_param_values=2, param_values=0x87ec5c0,
invocation_hint=0xbfffee90, marshal_data=0x0)
at /build/buildd/glib2.0-2.31.4.tested/./gobject/gmarshal.c:609
#6 0xb502017a in marshal_dbus_message_to_g_marshaller (closure=0x87ce5a0,
return_value=0x0, n_param_values=3, param_values=0x87d4048,
invocation_hint=0xbfffee90, marshal_data=0x0) at dbus-gproxy.c:1734
#7 0xb7442dac in g_closure_invoke (closure=0x87ce5a0, return_value=0x0,
n_param_values=3, param_values=0x87d4048, invocation_hint=0xbfffee90)
at /build/buildd/glib2.0-2.31.4.tested/./gobject/gclosure.c:774
#8 0xb74540c5 in signal_emit_unlocked_R (node=0x82be698, detail=2861,
instance=0x87e4090, emission_return=0x0, instance_and_params=0x87d4048)
at /build/buildd/glib2.0-2.31.4.tested/./gobject/gsignal.c:3302
#9 0xb745b942 in g_signal_emit_valist (instance=0x87e4090, signal_id=220,
detail=2861, var_args=0xbffff044 "")
at /build/buildd/glib2.0-2.31.4.tested/./gobject/gsignal.c:3033
#10 0xb745bad3 in g_signal_emit (instance=0x87e4090, signal_id=220,
detail=2861)
at /build/buildd/glib2.0-2.31.4.tested/./gobject/gsignal.c:3090
#11 0xb5020820 in dbus_g_proxy_emit_remote_signal (message=0x8427ce0,
proxy=<optimized out>) at dbus-gproxy.c:1787
#12 dbus_g_proxy_manager_filter (user_data=0x87c98d0, message=0x8427ce0,
connection=<optimized out>) at dbus-gproxy.c:1354
#13 dbus_g_proxy_manager_filter (connection=0x87d0568, message=0x8427ce0,
user_data=0x87c98d0) at dbus-gproxy.c:1195
#14 0xb693e441 in dbus_connection_dispatch ()
from /lib/i386-linux-gnu/libdbus-1.so.3
#15 0xb50189ad in message_queue_dispatch (source=0x878fb98, callback=0,
user_data=0x0) at dbus-gmain.c:90
#16 0xb738528a in g_main_dispatch (context=0x81f3b80)
at /build/buildd/glib2.0-2.31.4.tested/./glib/gmain.c:2513
#17 g_main_context_dispatch (context=0x81f3b80)
at /build/buildd/glib2.0-2.31.4.tested/./glib/gmain.c:3050
#18 0xb7385695 in g_main_context_iterate (dispatch=1, block=-1220988880,
context=0x81f3b80, self=<optimized out>)
user_data=0x0) at dbus-gmain.c:90
#16 0xb738528a in g_main_dispatch (context=0x81f3b80)
at /build/buildd/glib2.0-2.31.4.tested/./glib/gmain.c:2513
#17 g_main_context_dispatch (context=0x81f3b80)
at /build/buildd/glib2.0-2.31.4.tested/./glib/gmain.c:3050
#18 0xb7385695 in g_main_context_iterate (dispatch=1, block=-1220988880,
context=0x81f3b80, self=<optimized out>)
at /build/buildd/glib2.0-2.31.4.tested/./glib/gmain.c:3121
#19 g_main_context_iterate (context=0x81f3b80, block=-1220988880, dispatch=1,
self=<optimized out>)
at /build/buildd/glib2.0-2.31.4.tested/./glib/gmain.c:3058
#20 0xb7385771 in g_main_context_iteration (context=0x81f3b80, may_block=1)
at /build/buildd/glib2.0-2.31.4.tested/./glib/gmain.c:3182
#21 0xb753862c in g_application_run (application=0x81c5c08, argc=2,
argv=0xbffff374)
at /build/buildd/glib2.0-2.31.4.tested/./gio/gapplication.c:1548
#22 0x08067ae4 in ?? ()
#23 0xb7178113 in __libc_start_main (main=0x8067a20, argc=2,
ubp_av=0xbffff374, init=0x8158bd0, fini=0x8158c40, rtld_fini=0xb7feebc0,
stack_end=0xbffff36c) at libc-start.c:226
#24 0x08067b1d in ?? ()
Backtrace stopped: Not enough registers or memory available to unwind further
The NULL object_path above when libgdu receives the DeviceChanged signal from udisks seems to be the cause, but interestingly, running:
I can reproduce this in precise as well. Here is a slightly better backtrace:
1) gdb nautilus
2) run Computer://
3) Double click a partition in the nautilus window
4) Following backtrace:
(gdb) run Computer://
Starting program: /usr/bin/nautilus Computer://
[Thread debugging using libthread_db enabled]
[New Thread 0xb68feb70 (LWP 14782)]
[New Thread 0xb60fdb70 (LWP 14783)]
[New Thread 0xb58d3b70 (LWP 14784)]
Initializing nautilus-gdu extension
GLib-GObject- CRITICAL **: g_value_ get_pointer: assertion `G_VALUE_ HOLDS_POINTER (value)' failed
Program received signal SIGSEGV, Segmentation fault. buildd/ glib2.0- 2.31.4. tested/ ./glib/ ghash.c: 1661 buildd/ glib2.0- 2.31.4. tested/ ./glib/ ghash.c: No such file or directory. buildd/ glib2.0- 2.31.4. tested/ ./glib/ ghash.c buildd/ glib2.0- 2.31.4. tested/ ./glib/ ghash.c: 1661 table_lookup_ node (hash_return= <synthetic pointer>, 0x8783ee8) buildd/ glib2.0- 2.31.4. tested/ ./glib/ ghash.c: 385 0x8783ee8, key=0x0) buildd/ glib2.0- 2.31.4. tested/ ./glib/ ghash.c: 1058 get_by_ object_ path (pool=0x832acf0, object_path=0x0) changed_ signal_ handler (proxy=0x87e4090, path=0x0, user_data= 0x832acf0) at gdu-pool.c:1528 marshal_ VOID__POINTER (closure=0x87ce5a0, value=0x0, n_param_values=2, param_values= 0x87ec5c0, hint=0xbfffee90 , marshal_data=0x0) buildd/ glib2.0- 2.31.4. tested/ ./gobject/ gmarshal. c:609 dbus_message_ to_g_marshaller (closure=0x87ce5a0, value=0x0, n_param_values=3, param_values= 0x87d4048, hint=0xbfffee90 , marshal_data=0x0) at dbus-gproxy.c:1734 values= 3, param_values= 0x87d4048, invocation_ hint=0xbfffee90 ) buildd/ glib2.0- 2.31.4. tested/ ./gobject/ gclosure. c:774 emit_unlocked_ R (node=0x82be698, detail=2861, 0x87e4090, emission_ return= 0x0, instance_ and_params= 0x87d4048) buildd/ glib2.0- 2.31.4. tested/ ./gobject/ gsignal. c:3302 emit_valist (instance= 0x87e4090, signal_id=220, buildd/ glib2.0- 2.31.4. tested/ ./gobject/ gsignal. c:3033 0x87e4090, signal_id=220, buildd/ glib2.0- 2.31.4. tested/ ./gobject/ gsignal. c:3090 proxy_emit_ remote_ signal (message=0x8427ce0, <optimized out>) at dbus-gproxy.c:1787 proxy_manager_ filter (user_data= 0x87c98d0, message=0x8427ce0, <optimized out>) at dbus-gproxy.c:1354 proxy_manager_ filter (connection= 0x87d0568, message=0x8427ce0, data=0x87c98d0) at dbus-gproxy.c:1195 _dispatch () linux-gnu/ libdbus- 1.so.3 queue_dispatch (source=0x878fb98, callback=0, buildd/ glib2.0- 2.31.4. tested/ ./glib/ gmain.c: 2513 context_ dispatch (context=0x81f3b80) buildd/ glib2.0- 2.31.4. tested/ ./glib/ gmain.c: 3050 context_ iterate (dispatch=1, block=-1220988880, 0x81f3b80, self=<optimized out>) buildd/ glib2.0- 2.31.4. tested/ ./glib/ gmain.c: 2513 context_ dispatch (context=0x81f3b80) buildd/ glib2.0- 2.31.4. tested/ ./glib/ gmain.c: 3050 context_ iterate (dispatch=1, block=-1220988880, 0x81f3b80, self=<optimized out>) buildd/ glib2.0- 2.31.4. tested/ ./glib/ gmain.c: 3121 context_ iterate (context=0x81f3b80, block=-1220988880, dispatch=1, buildd/ glib2.0- 2.31.4. tested/ ./glib/ gmain.c: 3058 context_ iteration (context=0x81f3b80, may_block=1) buildd/ glib2.0- 2.31.4. tested/ ./glib/ gmain.c: 3182 0x81c5c08, argc=2, 0xbffff374) buildd/ glib2.0- 2.31.4. tested/ ./gio/gapplicat ion.c:1548 av=0xbffff374, init=0x8158bd0, fini=0x8158c40, rtld_fini= 0xb7feebc0, end=0xbffff36c) at libc-start.c:226
g_str_hash (v=0x0) at /build/
1661 /build/
in /build/
(gdb) bt
#0 g_str_hash (v=0x0)
at /build/
#1 0xb7374a38 in g_hash_
key=0x0, hash_table=
at /build/
#2 g_hash_table_lookup (hash_table=
at /build/
#3 0xb50493b9 in gdu_pool_
at gdu-pool.c:2217
#4 0xb50479b6 in device_
object_
#5 0xb7444f8a in g_cclosure_
return_
invocation_
at /build/
#6 0xb502017a in marshal_
return_
invocation_
#7 0xb7442dac in g_closure_invoke (closure=0x87ce5a0, return_value=0x0,
n_param_
at /build/
#8 0xb74540c5 in signal_
instance=
at /build/
#9 0xb745b942 in g_signal_
detail=2861, var_args=0xbffff044 "")
at /build/
#10 0xb745bad3 in g_signal_emit (instance=
detail=2861)
at /build/
#11 0xb5020820 in dbus_g_
proxy=
#12 dbus_g_
connection=
#13 dbus_g_
user_
#14 0xb693e441 in dbus_connection
from /lib/i386-
#15 0xb50189ad in message_
user_data=0x0) at dbus-gmain.c:90
#16 0xb738528a in g_main_dispatch (context=0x81f3b80)
at /build/
#17 g_main_
at /build/
#18 0xb7385695 in g_main_
context=
user_data=0x0) at dbus-gmain.c:90
#16 0xb738528a in g_main_dispatch (context=0x81f3b80)
at /build/
#17 g_main_
at /build/
#18 0xb7385695 in g_main_
context=
at /build/
#19 g_main_
self=<optimized out>)
at /build/
#20 0xb7385771 in g_main_
at /build/
#21 0xb753862c in g_application_run (application=
argv=
at /build/
#22 0x08067ae4 in ?? ()
#23 0xb7178113 in __libc_start_main (main=0x8067a20, argc=2,
ubp_
stack_
#24 0x08067b1d in ?? ()
Backtrace stopped: Not enough registers or memory available to unwind further
The NULL object_path above when libgdu receives the DeviceChanged signal from udisks seems to be the cause, but interestingly, running:
dbus-monitor --system "type=' signal' ,sender= 'org.freedeskto p.UDisks' ,interface= 'org.freedeskto p.UDisks' "
I get:
signal sender= org.freedesktop .DBus -> dest=:1.81 serial=2 path=/org/ freedesktop/ DBus; interface= org.freedesktop .DBus; member=NameAcquired freedesktop/ UDisks; interface= org.freedesktop .UDisks; member= DeviceJobChange d op/UDisks/ devices/ sda4" freedesktop/ UDisks; interface= org.freedesktop .UDisks; member= DeviceChanged op/UDisks/ devices/ sda4" freedesktop/ UDisks; interface= org.freedesktop .UDisks; member= DeviceJobChange d op/UDisks/ devices/ sda4"
string ":1.81"
signal sender=:1.54 -> dest=(null destination) serial=389 path=/org/
object path "/org/freedeskt
boolean true
string "FilesystemMount"
uint32 1000
boolean false
double -1
signal sender=:1.54 -> dest=(null destination) serial=393 path=/org/
object path "/org/freedeskt
signal sender=:1.54 -> dest=(null destination) serial=395 path=/org/
object path "/org/freedeskt
boolean false
string ""
uint32 0
boolean false
double -1
So the object path would seem to be non-NULL when udisks emits it. Strange.