multipathd segfaults on udevtrigger on RHEL5/32bit with cciss storage
Issue
The multipathd daemon segfaults when udevtrigger is run on a 32 bit RHEL5 system if block devices with names 10 or more characters long are present.
Oct 22 09:10:07 | uevent 'add' from '/block/cciss!c0d0'
Oct 22 09:10:07 | ACTION=add
Oct 22 09:10:07 | DEVPATH=/block/cciss!c0d0
Oct 22 09:10:07 | SUBSYSTEM=block
Oct 22 09:10:07 | SEQNUM=5114
Oct 22 09:10:07 | MINOR=0
Oct 22 09:10:07 | MAJOR=104
Oct 22 09:10:07 | PHYSDEVPATH=/devices/pci0000:40/0000:40:11.0/0000:4f:00.0/0000:50:08.0/cciss0/c0d0
Oct 22 09:10:07 | PHYSDEVBUS=cciss
Oct 22 09:10:07 | uevent 'add' from '/block/cciss!c0d0/cciss!c0d0p2'
Oct 22 09:10:07 | ACTION=add
Segmentation fault
(gdb) where
#0 0x08074c35 in basenamecpy (str1=0x0, str2=0xb7eac2c4 "") at util.c:44
#1 0x0804c270 in uev_trigger (uev=0xb7eac33c, trigger_data=0x0) at main.c:701
#2 0x08079fee in __dso_handle ()
#3 0xb7eac33c in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Environment
- Red Hat Enterprise Linux 5, minor version <10
- i386/i686 32-bit kernel
- 64bit systems are also affected though less likely to segfault due to stack alignment differences
- device-mapper-multipath, versions <
0.4.7-54.el5_9.1
- HP cciss controller (or any storage with device names exceeding 10 characters)
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.