Bug 1283181
Summary: | multipathd crash when admin try to remove non-multipath device | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | masanari iida <masanari_iida> | ||||
Component: | device-mapper-multipath | Assignee: | Ben Marzinski <bmarzins> | ||||
Status: | CLOSED ERRATA | QA Contact: | Lin Li <lilin> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | unspecified | ||||||
Version: | 6.7 | CC: | agk, bmarzins, dwysocha, heinzm, lilin, msnitzer, prajnoha, prockai, rbalakri, zkabelac | ||||
Target Milestone: | rc | ||||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | device-mapper-multipath-0.4.9.89.el6 | Doc Type: | Bug Fix | ||||
Doc Text: |
Cause: Multipathd wasn't checking if a pointer was NULL before dereferencing it on a failed command line remove for a missing path device
Consequence: multipathd would crash if users tried to remove a path that it wasn't monitoring with the "multipathd del path" command
Fix: multipathd now checks if the pointer is NULL before dereferencing it.
Result: multipathd no longer crashed when users try to remove paths that are not being monitored.
|
Story Points: | --- | ||||
Clone Of: | Environment: | ||||||
Last Closed: | 2016-05-10 20:13:30 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
masanari iida
2015-11-18 12:19:20 UTC
Created attachment 1096021 [details]
corefile of multipathd collected by abrt
Additional information Following commands also cause the multipathd to crash remove path sda (sda is not managed by multipathd.) remove path 8:48 (8:48 = /dev/sdc. It _is_ managed by multipathd.) del path 8:48 (8:48 = /dev/sdc. It _is_ managed by multipathd.) "del/remove path" with correct device (/dev/sdc or sdc) works fine. But "del/remove path" with any other word crash the multipathd. :( Program terminated with signal SIGSEGV, Segmentation fault. #0 ev_remove_path (devname=0x7fcb88001fa0 "sda", vecs=0x1914c10, del_sysdev=0x0) at main.c:595 595 main.c: No such file or directory. [Current thread is 1 (LWP 1723)] (gdb) (gdb) info shared From To Syms Read Shared Object Library 0x000000349e4077a0 0x000000349e436cf8 Yes (*) ./lib64/libdevmapper.so.1.02 0x000000349d814550 0x000000349d832af8 Yes ./lib64/libreadline.so.6 0x00000034a8006a30 0x00000034a801cec8 Yes ./lib64/libncurses.so.5 0x000000349c000de0 0x000000349c001998 Yes ./lib64/libdl.so.2 0x000000307680ec90 0x00000030768359b8 Yes ./lib64/libmultipath.so 0x0000003076c021b0 0x0000003076c05f58 Yes ./lib64/libmpathpersist.so.0 0x0000003076402910 0x0000003076412f78 Yes ./lib64/libgcc_s.so.1 0x000000349c805760 0x000000349c811148 Yes ./lib64/libpthread.so.0 0x000000349c41eaa0 0x000000349c5400cc Yes ./lib64/libc.so.6 0x000000349dc058d0 0x000000349dc15cb8 Yes ./lib64/libselinux.so.1 0x000000349e003e80 0x000000349e02e618 Yes ./lib64/libsepol.so.1 0x00000034a7002930 0x00000034a7009a78 Yes ./lib64/libudev.so.0 0x00000034ae40c840 0x00000034ae415c08 Yes ./lib64/libtinfo.so.5 0x000000349bc00b00 0x000000349bc19feb Yes ./lib64/ld-linux-x86-64.so.2 0x00007fcb8ebcfb50 0x00007fcb8ebd0478 Yes ./lib64/multipath/libcheckdirectio.so 0x00007fcb8e9ce570 0x00007fcb8e9ce721 Yes ./lib64/libaio.so.1 0x00007fcb8e7cd460 0x00007fcb8e7cd578 Yes ./lib64/multipath/libprioconst.so (*): Shared library is missing debugging information. (gdb) bt #0 ev_remove_path (devname=0x7fcb88001fa0 "sda", vecs=0x1914c10, del_sysdev=0x0) at main.c:595 #1 0x000000000040ac9d in parse_cmd (cmd=<optimized out>, reply=0x7fcb8e7cbd80, len=0x7fcb8e7cbd9c, data=0x1914c10) at cli.c:407 #2 0x0000000000407fc3 in uxsock_trigger ( str=0x7fcb88001d10 "remove path sda", reply=0x7fcb8e7cbd80, len=0x7fcb8e7cbd9c, trigger_data=<optimized out>) at main.c:718 #3 0x00000000004095d8 in uxsock_listen ( uxsock_trigger=0x407f70 <uxsock_trigger>, trigger_data=0x1914c10) at uxlsnr.c:148 #4 0x0000000000405ddb in uxlsnrloop (ap=0x1914c10) at main.c:895 #5 0x000000349c807a51 in start_thread (arg=0x7fcb8e7cc700) at pthread_create.c:301 #6 0x000000349c4e896d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115 Reproduced on device-mapper-multipath-0.4.9-87.el6 1). Configure multipath /dev/sda and /dev/sdb are a member of multipath. (iscsi device). /dev/sdc and /dev/sdd are not member of multipath. # multipath -ll mpathb (360fff19abdd9552f8a36e5355226ba27) dm-0 EQLOGIC,100E-00 size=50G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=1 status=active | `- 3:0:0:0 sdb 8:16 active ready running `-+- policy='round-robin 0' prio=1 status=enabled `- 0:0:0:0 sda 8:0 active ready running 2). # multipathd -k multipathd> list paths hcil dev dev_t pri dm_st chk_st dev_st next_check 3:0:0:0 sdb 8:16 1 active ready running XX........ 4/20 0:0:0:0 sda 8:0 1 active ready running X......... 3/20 multipathd> del path sdc # <= multipathd segv and automatically back to shell prompt. 3). # dmesg multipathd[2031]: segfault at 0 ip 0000000000408aff sp 00007f73e6759c00 error 6 in multipathd (deleted)[400000+10000] 4). check /var/log/messages Feb 24 04:03:43 storageqe-84 kernel: multipathd[2031]: segfault at 0 ip 0000000000408aff sp 00007f73e6759c00 error 6 in multipathd (deleted)[400000+10000] Feb 24 04:03:43 storageqe-84 abrt[53057]: File '/sbin/multipathd' seems to be deleted Feb 24 04:03:43 storageqe-84 abrt[53057]: Saved core dump of pid 2024 (/sbin/multipathd) to /var/spool/abrt/ccpp-2016-02-24-04:03:43-2024 (1945600 bytes) Verified on device-mapper-multipath-0.4.9-92.el6 1).1). Configure multipath /dev/sda and /dev/sdb are a member of multipath. (iscsi device). /dev/sdc and /dev/sdd are not member of multipath. # multipath -ll mpathb (360fff19abdd9552f8a36e5355226ba27) dm-0 EQLOGIC,100E-00 size=50G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=1 status=active | `- 3:0:0:0 sdb 8:16 active ready running `-+- policy='round-robin 0' prio=1 status=enabled `- 0:0:0:0 sda 8:0 active ready running 2).multipathd -k multipathd> list paths hcil dev dev_t pri dm_st chk_st dev_st next_check 3:0:0:0 sdb 8:16 1 active ready running XXXXXXXXX. 19/20 0:0:0:0 sda 8:0 1 active ready running XXXXXXXXX. 19/20 multipathd> del path sdc ok multipathd> multipathd no longer crashed Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-0777.html |