[PATCH][RFC]hald crash details+patch proposal

Sergey Lapin slapinid at gmail.com
Mon Dec 4 05:07:49 PST 2006


hi!

We have on ARM:

D-BUS version is 0.61
glib version is 2.10.3

So hald is crashing early on startup.

GDB session follows:

GNU gdb 6.4
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "arm-poky-linux"...
(gdb) set args --daemon=no
(gdb) run
Starting program: /usr/sbin/hald --daemon=no
Runner started - allowed paths are
'/usr/libexec:/usr/lib/hal/scripts:/usr/bin'
Run started hal-storage-cleanup-all-mountpoints (10000) (0)
!  full path is '/usr/libexec/hal-storage-cleanup-all-mountpoints',
program_dir is '/usr/libexec'
2771: XYA attempting to get lock on /media/.hal-mtab-lock
2771: XYA got lock on /media/.hal-mtab-lock
in hal-storage-cleanup-all-mountpoints
org.freedesktop.Hal.Device.Volume.UnknownFailure
Cannot open /media/.hal-mtab
/usr/libexec/hal-storage-cleanup-all-mountpoints exited
Run started hald-addon-cpufreq (0) (0)
!  full path is '/usr/libexec/hald-addon-cpufreq', program_dir is
'/usr/libexec'
01:33:54.180 [W] addon-cpufreq.c:1202: CPUFreq not supported. Exiting...
/usr/libexec/hald-addon-cpufreq exited
Run started hald-probe-input (10000) (0)
!  full path is '/usr/libexec/hald-probe-input', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-input exited
Run started hald-probe-input (10000) (0)
!  full path is '/usr/libexec/hald-probe-input', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-input exited
Run started hald-probe-input (10000) (0)
!  full path is '/usr/libexec/hald-probe-input', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-input exited
Run started hald-probe-input (10000) (0)
!  full path is '/usr/libexec/hald-probe-input', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-input exited
Run started hald-probe-input (10000) (0)
!  full path is '/usr/libexec/hald-probe-input', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-input exited
Run started hald-addon-keyboard (0) (0)
!  full path is '/usr/libexec/hald-addon-keyboard', program_dir is
'/usr/libexec'
Run started hald-probe-input (10000) (0)
!  full path is '/usr/libexec/hald-probe-input', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-input exited
Run started hald-probe-input (10000) (0)
!  full path is '/usr/libexec/hald-probe-input', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-input exited
Run started hald-probe-input (10000) (0)
!  full path is '/usr/libexec/hald-probe-input', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-input exited
Run started hald-probe-input (10000) (0)
!  full path is '/usr/libexec/hald-probe-input', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-input exited
Run started hald-probe-storage (10000) (0)
!  full path is '/usr/libexec/hald-probe-storage', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-storage exited
Run started hald-probe-volume (10000) (0)
!  full path is '/usr/libexec/hald-probe-volume', program_dir is
'/usr/libexec'
/usr/libexec/hald-probe-volume exited

Program received signal SIGSEGV, Segmentation fault.
0x4009122c in IA__g_hash_table_lookup_extended (hash_table=0x7b830,
lookup_key=0x7b830, orig_key=0xbedb9578, value=0xbedb9574) at ghash.c:242
242     ghash.c: No such file or directory.
          in ghash.c
(gdb) bt
#0  0x4009122c in IA__g_hash_table_lookup_extended (hash_table=0x7b830,
lookup_key=0x7b830, orig_key=0xbedb9578, value=0xbedb9574) at ghash.c:242
#1  0x0001c00c in device_is_executing_method (d=0x7b830,
interface_name=0x7b830
"/org/freedesktop/Hal/devices/volume_part_1_size_268436992",
      method_name=0xbedb9578 "D\214\004") at hald_dbus.c:2901
#2  0x0002a180 in blockdev_refresh_mount_state (d=0x5d7b0) at blockdev.c:249
#3  0x0002a590 in add_blockdev_probing_helper_done (d=0x5d7b0,
exit_type=0, return_code=0, error=0xbedb9574, data1=0x76700, data2=0x0)
at blockdev.c:363
#4  0x0000faac in call_notify (pending=0x7b800, user_data=0x7b830) at
hald_runner.c:512
#5  0x4010db28 in _dbus_pending_call_notify (pending=0x7b800) at
dbus-pending-call.c:123
#6  0x40102f90 in _dbus_pending_call_complete_and_unlock
(pending=0x7b800, message=0x5ce80) at dbus-connection.c:911
#7  0x40104a78 in dbus_connection_dispatch (connection=0x51ee8) at
dbus-connection.c:3582
#8  0x40060590 in message_queue_dispatch (source=0x7b830,
callback=0x7b830, user_data=0xbedb9578) at dbus-gmain.c:113
#9  0x40099ecc in g_main_dispatch (context=0x50b38) at gmain.c:1916
#10 0x4009ae4c in IA__g_main_context_dispatch (context=0x50b38) at
gmain.c:2466
#11 0x4009b180 in g_main_context_iterate (context=0x50b38, block=1,
dispatch=1, self=0xbedb9574) at gmain.c:2547
#12 0x4009b628 in IA__g_main_loop_run (loop=0x4f530) at gmain.c:2751
#13 0x000174f8 in main (argc=2, argv=0xbedb9e14) at hald.c:606
(gdb)

functions which initialize udi_to_method_queue:

only hald_exec_method_enqueue

So we probably should initialize it earlier.

Please see attached patch proposal

S.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: hald_dbus.c-crash.diff
Type: text/x-patch
Size: 542 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/hal/attachments/20061204/486b9aa4/hald_dbus.c-crash.bin


More information about the hal mailing list