lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200906211817.25878.arvidjaar@mail.ru>
Date:	Sun, 21 Jun 2009 18:17:23 +0400
From:	Andrey Borzenkov <arvidjaar@...l.ru>
To:	hal@...ts.freedesktop.org
Cc:	linux-kernel@...r.kernel.org, rpurdie@...ys.net
Subject: Re: 2.6.30: hald crashes on resume from STR apparently on LED device

On Sunday 14 of June 2009 22:19:02 Andrey Borzenkov wrote:
> I did not experience this crash under 2.6.29. I got it under 2.6.30
> (both rc and final) with varying frequency. At least for me it is
> 2.6.30 regression.
>
> hald aborts on D-Bus assertion with stack trace below.Program
> received signal SIGABRT, Aborted.
> 0x00007f183ff9e915 in raise (sig=<value optimized out>) at
> ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> 64	  return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
> (gdb) bt
> #0  0x00007f183ff9e915 in raise (sig=<value optimized out>) at
> ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> #1  0x00007f183ff9ff8a in abort () at abort.c:88
> #2  0x00007f1840793f35 in _dbus_abort () at dbus-sysdeps.c:88
> #3  0x00007f184078fd6d in _dbus_warn_check_failed (
>     format=0x7f184079c5a0 "arguments to %s() were incorrect,
> assertion \"%s\" failed in file %s line %d.\nThis is normally a bug
> in some application using the D-Bus library.\n") at
> dbus-internals.c:283 #4  0x00007f18407873f9 in
> dbus_pending_call_set_notify (pending=0x0, function=0x41b320
> <reply_from_singleton_device_changed>,
>     user_data=0xc74c30, free_user_data=0x416000 <del_sdci>) at dbus-
> pending-call.c:598
> #5  0x0000000000415f6e in singleton_signal_device_changed
> (connection=0xbdc140, device=0x7f18411af2c0, added=1)
>     at hald_dbus.c:3481
> #6  0x0000000000419fe2 in hald_singleton_device_added
> (command_line=0xc601e0 "hald-addon-leds", device=0x7f18411af2c0)
>     at hald_dbus.c:3570

OK this is HAL bug which could be triggered by some changes in 2.6.30 
series. I leave kernel on Cc list so far to ask whether there was 
actually behaviour change in 2.6.30 or it is just different timing that 
now hits badly.

So what happens is simple. During suspend led device is removed; during 
resume it is recreated. Apparently removing led device cause hald-addon-
leds to exit (thus disconnecting D-Bus connection); and sometimes next 
"add" event comes too early, before hald had chance to notice missing 
addon.

So attached is POC patch that simply adds extra check to 
hald_singleton_device_added() to ensure we do not abort on disconnected 
D-Bus connection. It does not seem to have evil effects; it is possible 
that we do miss some event but I do not quite understand processing 
logic here. Apparently event should be replayed ...

Here is list of hald processes after resume. Notice that hald-addon-leds 
is restarted every time:

pts/1}% pgrep -l hald                
13996 hald                            
13997 hald-runner                     
14098 hald-addon-rfki                 
14130 hald-addon-gene                 
14156 hald-addon-inpu                 
14190 hald-addon-stor                 
14194 hald-addon-cpuf                 
14195 hald-addon-acpi                 
14796 hald-addon-leds                 
{pts/1}% pgrep -l hald                
13996 hald                            
13997 hald-runner                     
14098 hald-addon-rfki                 
14130 hald-addon-gene                 
14156 hald-addon-inpu                 
14190 hald-addon-stor                 
14194 hald-addon-cpuf                 
14195 hald-addon-acpi                 
16145 hald-addon-leds                 
{pts/1}% pgrep -l hald                
13996 hald                            
13997 hald-runner                     
14098 hald-addon-rfki                 
14130 hald-addon-gene                 
14156 hald-addon-inpu
14190 hald-addon-stor
14194 hald-addon-cpuf
14195 hald-addon-acpi
17543 hald-addon-leds
{pts/1}% pgrep -l hald
13996 hald
13997 hald-runner
14098 hald-addon-rfki
14130 hald-addon-gene
14156 hald-addon-inpu
14190 hald-addon-stor
14194 hald-addon-cpuf
14195 hald-addon-acpi
{pts/1}% pgrep -l hald
13996 hald
13997 hald-runner
14098 hald-addon-rfki
14130 hald-addon-gene
14156 hald-addon-inpu
14190 hald-addon-stor
14194 hald-addon-cpuf
14195 hald-addon-acpi
21842 hald-addon-leds
{pts/1}% pgrep -l hald
13996 hald
13997 hald-runner
14098 hald-addon-rfki
14130 hald-addon-gene
14156 hald-addon-inpu
14190 hald-addon-stor
14194 hald-addon-cpuf
14195 hald-addon-acpi
23946 hald-addon-leds

and events that are generated by kernel during suspend/remove cycle:

{pts/0}% sudo udevadm monitor --env --kernel
monitor will print the received events for: 
KERNEL - the kernel uevent                  

KERNEL[1245593084.803490] remove   
/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::assoc 
(leds)                                                    
UDEV_LOG=3                                                                      
ACTION=remove                                                                   
DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-
phy0::assoc      
SUBSYSTEM=leds                                                                  
SEQNUM=1458                                                                     

KERNEL[1245593084.803530] remove   
/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::RX (leds)                                                       
UDEV_LOG=3                                                                      
ACTION=remove                                                                   
DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::RX         
SUBSYSTEM=leds                                                                  
SEQNUM=1459                                                                     

KERNEL[1245593084.803550] remove   
/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::TX (leds)                                                       
UDEV_LOG=3                                                                      
ACTION=remove                                                                   
DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::TX         
SUBSYSTEM=leds                                                                  
SEQNUM=1460                                                                     

KERNEL[1245593084.803570] remove   
/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::radio 
(leds)                                                    
UDEV_LOG=3                                                                      
ACTION=remove                                                                   
DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-
phy0::radio      
SUBSYSTEM=leds                                                                  
SEQNUM=1461                                                                     

KERNEL[1245593084.803590] remove   /devices/system/cpu/cpu1/cpufreq 
(cpu)
UDEV_LOG=3                                                               
ACTION=remove                                                            
DEVPATH=/devices/system/cpu/cpu1/cpufreq                                 
SUBSYSTEM=cpu                                                            
SEQNUM=1462                                                              

KERNEL[1245593084.803610] remove   /devices/system/cpu/cpu1/cache/index0 
(cpu)
UDEV_LOG=3                                                                    
ACTION=remove                                                                 
DEVPATH=/devices/system/cpu/cpu1/cache/index0                                 
SUBSYSTEM=cpu                                                                 
SEQNUM=1463                                                                   

KERNEL[1245593084.803629] remove   /devices/system/cpu/cpu1/cache/index1 
(cpu)
UDEV_LOG=3                                                                    
ACTION=remove                                                                 
DEVPATH=/devices/system/cpu/cpu1/cache/index1                                 
SUBSYSTEM=cpu                                                                 
SEQNUM=1464                                                                   

KERNEL[1245593084.803648] remove   /devices/system/cpu/cpu1/cache/index2 
(cpu)
UDEV_LOG=3                                                                    
ACTION=remove                                                                 
DEVPATH=/devices/system/cpu/cpu1/cache/index2                                 
SUBSYSTEM=cpu                                                                 
SEQNUM=1465                                                                   

KERNEL[1245593084.803667] remove   /devices/system/cpu/cpu1/cache (cpu)
UDEV_LOG=3                                                             
ACTION=remove                                                          
DEVPATH=/devices/system/cpu/cpu1/cache                                 
SUBSYSTEM=cpu                                                          
SEQNUM=1466                                                            

KERNEL[1245593084.803687] remove   
/devices/system/machinecheck/machinecheck1 (machinecheck)                                                                    
UDEV_LOG=3                                                                      
ACTION=remove                                                                   
DEVPATH=/devices/system/machinecheck/machinecheck1                              
SUBSYSTEM=machinecheck                                                          
SEQNUM=1467                                                                     

KERNEL[1245593084.803707] add      /devices/system/cpu/cpu1/cache/index0 
(cpu)
UDEV_LOG=3                                                                    
ACTION=add                                                                    
DEVPATH=/devices/system/cpu/cpu1/cache/index0                                 
SUBSYSTEM=cpu                                                                 
SEQNUM=1468                                                                   

KERNEL[1245593084.803726] add      /devices/system/cpu/cpu1/cache/index1 
(cpu)
UDEV_LOG=3                                                                    
ACTION=add                                                                    
DEVPATH=/devices/system/cpu/cpu1/cache/index1                                 
SUBSYSTEM=cpu                                                                 
SEQNUM=1469                                                                   

KERNEL[1245593084.803745] add      /devices/system/cpu/cpu1/cache/index2 
(cpu)
UDEV_LOG=3                                                                    
ACTION=add                                                                    
DEVPATH=/devices/system/cpu/cpu1/cache/index2                                 
SUBSYSTEM=cpu                                                                 
SEQNUM=1470                                                                   

KERNEL[1245593084.803764] add      /devices/system/cpu/cpu1/cache (cpu)
UDEV_LOG=3                                                             
ACTION=add                                                             
DEVPATH=/devices/system/cpu/cpu1/cache                                 
SUBSYSTEM=cpu                                                          
SEQNUM=1471                                                            

KERNEL[1245593084.803784] add      
/devices/system/machinecheck/machinecheck1 (machinecheck)                                                                    
UDEV_LOG=3                                                                      
ACTION=add                                                                      
DEVPATH=/devices/system/machinecheck/machinecheck1                              
SUBSYSTEM=machinecheck                                                          
SEQNUM=1472                                                                     

KERNEL[1245593084.803804] add      /devices/system/cpu/cpu1/cpufreq 
(cpu)
UDEV_LOG=3                                                               
ACTION=add                                                               
DEVPATH=/devices/system/cpu/cpu1/cpufreq                                 
SUBSYSTEM=cpu                                                            
SEQNUM=1473                                                              

KERNEL[1245593084.803825] change   
/devices/LNXSYSTM:00/device:00/ACPI0003:00/power_supply/AC 
(power_supply)                                                    
UDEV_LOG=3                                                                      
ACTION=change                                                                   
DEVPATH=/devices/LNXSYSTM:00/device:00/ACPI0003:00/power_supply/AC              
SUBSYSTEM=power_supply                                                          
POWER_SUPPLY_NAME=AC                                                            
POWER_SUPPLY_TYPE=Mains                                                         
POWER_SUPPLY_ONLINE=1                                                           
SEQNUM=1474                                                                     

KERNEL[1245593084.803860] change   
/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0 
(power_supply)                                                   
UDEV_LOG=3                                                                      
ACTION=change                                                                   
DEVPATH=/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0             
SUBSYSTEM=power_supply                                                          
POWER_SUPPLY_NAME=BAT0                                                          
POWER_SUPPLY_TYPE=Battery                                                       
POWER_SUPPLY_STATUS=Unknown                                                     
POWER_SUPPLY_PRESENT=1                                                          
POWER_SUPPLY_TECHNOLOGY=Li-ion                                                  
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11100000                                        
POWER_SUPPLY_VOLTAGE_NOW=12016000                                               
POWER_SUPPLY_CURRENT_NOW=2595000                                                
POWER_SUPPLY_CHARGE_FULL_DESIGN=5200000                                         
POWER_SUPPLY_CHARGE_FULL=4925000                                                
POWER_SUPPLY_CHARGE_NOW=2819000                                                 
POWER_SUPPLY_MODEL_NAME=DELL WR0478                                             
POWER_SUPPLY_MANUFACTURER=Samsung SDI                                           
POWER_SUPPLY_SERIAL_NUMBER=21873                                                
SEQNUM=1475                                                                     

KERNEL[1245593084.817242] change   
/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0 
(power_supply)                                                   
UDEV_LOG=3                                                                      
ACTION=change                                                                   
DEVPATH=/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0             
SUBSYSTEM=power_supply                                                          
POWER_SUPPLY_NAME=BAT0                                                          
POWER_SUPPLY_TYPE=Battery                                                       
POWER_SUPPLY_STATUS=Unknown                                                     
POWER_SUPPLY_PRESENT=1                                                          
POWER_SUPPLY_TECHNOLOGY=Li-ion                                                  
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11100000                                        
POWER_SUPPLY_VOLTAGE_NOW=12016000                                               
POWER_SUPPLY_CURRENT_NOW=2595000                                                
POWER_SUPPLY_CHARGE_FULL_DESIGN=5200000                                         
POWER_SUPPLY_CHARGE_FULL=4925000                                                
POWER_SUPPLY_CHARGE_NOW=2819000                                                 
POWER_SUPPLY_MODEL_NAME=DELL WR0478                                             
POWER_SUPPLY_MANUFACTURER=Samsung SDI                                           
POWER_SUPPLY_SERIAL_NUMBER=21873                                                
SEQNUM=1476                                                                     

KERNEL[1245593084.817297] change   
/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0 
(power_supply)                                                   
UDEV_LOG=3                                                                      
ACTION=change                                                                   
DEVPATH=/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0             
SUBSYSTEM=power_supply                                                          
POWER_SUPPLY_NAME=BAT0                                                          
POWER_SUPPLY_TYPE=Battery                                                       
POWER_SUPPLY_STATUS=Charging                                                    
POWER_SUPPLY_PRESENT=1                                                          
POWER_SUPPLY_TECHNOLOGY=Li-ion                                                  
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11100000                                        
POWER_SUPPLY_VOLTAGE_NOW=11717000                                               
POWER_SUPPLY_CURRENT_NOW=2275000                                                
POWER_SUPPLY_CHARGE_FULL_DESIGN=5200000                                         
POWER_SUPPLY_CHARGE_FULL=4925000                                                
POWER_SUPPLY_CHARGE_NOW=2819000                                                 
POWER_SUPPLY_MODEL_NAME=DELL WR0478                                             
POWER_SUPPLY_MANUFACTURER=Samsung SDI                                           
POWER_SUPPLY_SERIAL_NUMBER=21873                                                
SEQNUM=1477                                                                     

KERNEL[1245593084.817342] add      
/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::radio 
(leds)                                                    
UDEV_LOG=3                                                                      
ACTION=add                                                                      
DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-
phy0::radio      
SUBSYSTEM=leds                                                                  
SEQNUM=1478                                                                     

KERNEL[1245593084.817382] add      
/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::assoc 
(leds)                                                    
UDEV_LOG=3                                                                      
ACTION=add                                                                      
DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-
phy0::assoc      
SUBSYSTEM=leds                                                                  
SEQNUM=1479                                                                     

KERNEL[1245593084.817402] add      
/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::RX (leds)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::RX
SUBSYSTEM=leds
SEQNUM=1480

KERNEL[1245593084.817421] add      
/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::TX (leds)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:0c:00.0/leds/iwl-phy0::TX
SUBSYSTEM=leds
SEQNUM=1481

KERNEL[1245593084.817442] remove   
/devices/pci0000:00/0000:00:1a.0/usb2/2-2/2-2.1/2-2.1:1.0/bluetooth/hci0 
(bluetooth)
UDEV_LOG=3
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb2/2-2/2-2.1/2-2.1:1.0/bluetooth/hci0
SUBSYSTEM=bluetooth
DEVTYPE=host
SEQNUM=1482

KERNEL[1245593084.817464] add      
/devices/pci0000:00/0000:00:1a.0/usb2/2-2/2-2.1/2-2.1:1.0/bluetooth/hci0 
(bluetooth)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb2/2-2/2-2.1/2-2.1:1.0/bluetooth/hci0
SUBSYSTEM=bluetooth
DEVTYPE=host
SEQNUM=1483


View attachment "hal-0.5.12-singleton_connection.patch" of type "text/x-patch" (531 bytes)

Download attachment "signature.asc " of type "application/pgp-signature" (198 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ