Community Packages

Please read this before reporting a bug:
https://wiki.archlinux.org/title/Bug_reporting_guidelines

Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.

REPEAT: Do NOT report bugs for outdated packages!
Tasklist

FS#32856 - [multipath-tools] libmultipath.so.0 is corrupt

Attached to Project: Community Packages
Opened by Richard Tollerton (rtollert) - Monday, 26 November 2012, 00:00 GMT
Last edited by Bartłomiej Piotrowski (Barthalion) - Sunday, 30 December 2012, 08:45 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Bartłomiej Piotrowski (Barthalion)
Architecture x86_64
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

0.4.9-11 broke multipath, hard:

# /usr/bin/multipath --help
Segmentation fault

It's crashing before main():

# gdb -q /usr/bin/multipath
Reading symbols from /usr/bin/multipath...(no debugging symbols found)...done.
(gdb) run --help
<snip>
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7de641a in _dl_relocate_object () from /lib/ld-linux-x86-64.so.2
(gdb) bt
#0 0x00007ffff7de641a in _dl_relocate_object () from /lib/ld-linux-x86-64.so.2
#1 0x00007ffff7ddeb82 in dl_main () from /lib/ld-linux-x86-64.so.2
#2 0x00007ffff7def9de in _dl_sysdep_start () from /lib/ld-linux-x86-64.so.2
#3 0x00007ffff7ddfdbe in _dl_start () from /lib/ld-linux-x86-64.so.2
#4 0x00007ffff7ddc5e8 in _start () from /lib/ld-linux-x86-64.so.2
<snip>

The offending party is /usr/lib/libmultipath.so.0:

# LD_DEBUG=all multipath --help |& tail
15295: symbol=__sprintf_chk; lookup in file=/usr/lib/libc.so.6 [0]
15295: binding file /usr/lib/libudev.so.1 [0] to /usr/lib/libc.so.6 [0]: normal symbol `__sprintf_chk' [GLIBC_2.3.4]
15295: symbol=socket; lookup in file=multipath [0]
15295: symbol=socket; lookup in file=/usr/lib/libpthread.so.0 [0]
15295: symbol=socket; lookup in file=/usr/lib/libdevmapper.so.1.02 [0]
15295: symbol=socket; lookup in file=/usr/lib/libmultipath.so.0 [0]
15295: symbol=socket; lookup in file=/usr/lib/libc.so.6 [0]
15295: binding file /usr/lib/libudev.so.1 [0] to /usr/lib/libc.so.6 [0]: normal symbol `socket' [GLIBC_2.2.5]
15295:
15295: relocation processing: /usr/lib/libmultipath.so.0 (lazy)

... which is corrupted in the package (note differing sizes):

~/abs/multipath-tools$ makepkg -f >& build.log
~/abs/multipath-tools$ ls -al src/libmultipath/libmultipath.so.0 pkg/usr/lib/libmultipath.so.0
-rwxr-xr-x 1 rtollert rtollert 272620 Nov 25 17:49 pkg/usr/lib/libmultipath.so.0
-rwxr-xr-x 1 rtollert rtollert 272621 Nov 25 17:49 src/libmultipath/libmultipath.so.0

~/abs/multipath-tools$ readelf -d pkg/usr/lib/libmultipath.so.0
readelf: Error: no .dynamic section in the dynamic segment

Dynamic section at offset 0x370a8 contains 8 entries:
Tag Type Name/Value
0x6f00000000000000 (<unknown>: 6f00000000000000) 0x100000000000000
0x7f00000000000000 (<unknown>: 7f00000000000000) 0x100000000000000
0x8a00000000000000 (<unknown>: 8a00000000000000) 0x100000000000000
0x8400000000000000 (<unknown>: 8400000000000000) 0xe00000000000019
0xa100000000000000 (<unknown>: a100000000000000) 0xc00000000000019
0xe000000000000000 (<unknown>: e000000000000000) 0xd000000000000b7
0xe400000000000000 (<unknown>: e400000000000000) 0x19000000000002c5
0x0000000000000000 (NULL) 0x1b00000000002370
~/abs/multipath-tools$ readelf -d src/libmultipath/libmultipath.so.0

Dynamic section at offset 0x370a8 contains 28 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libdevmapper.so.1.02]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000e (SONAME) Library soname: [libmultipath.so.0]
0x000000000000000c (INIT) 0xb7e0
0x000000000000000d (FINI) 0x2c5e4
0x0000000000000019 (INIT_ARRAY) 0x237000
0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)
0x000000000000001a (FINI_ARRAY) 0x237008
0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)
0x000000006ffffef5 (GNU_HASH) 0x1b8
0x0000000000000005 (STRTAB) 0x3af0
0x0000000000000006 (SYMTAB) 0xc40
0x000000000000000a (STRSZ) 6663 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000003 (PLTGOT) 0x2373d8
0x0000000000000002 (PLTRELSZ) 9096 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x9458
0x0000000000000007 (RELA) 0x59c0
0x0000000000000008 (RELASZ) 15000 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffffe (VERNEED) 0x58e0
0x000000006fffffff (VERNEEDNUM) 4
0x000000006ffffff0 (VERSYM) 0x54f8
0x000000006ffffff9 (RELACOUNT) 579
0x0000000000000000 (NULL) 0x0


... which was caused by r80193:

+ find $pkgdir -type f -exec sed 's/sbin/bin/g' -i {} \;

... as is proven by diffing `od -xc` output between the two different copies of libmultipath.so.0.

Looks like the fix for  FS#32562  is broken and needs to be rewritten.
This task depends upon

Closed by  Bartłomiej Piotrowski (Barthalion)
Sunday, 30 December 2012, 08:45 GMT
Reason for closing:  Fixed
Additional comments about closing:  multipath-tools 0.4.9-12
Comment by Richard Tollerton (rtollert) - Monday, 26 November 2012, 00:03 GMT
Apologies; on second thought, this bug should have been marked High priority, not Critical.

Loading...