[Bug 1489379] Comment bridged from LTC Bugzilla
--- Comment From afana...@us.ibm.com 2015-09-18 21:27 EDT--- *** Bug 129488 has been marked as a duplicate of this bug. *** -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to multipath-tools in Ubuntu. https://bugs.launchpad.net/bugs/1489379 Title: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs
[Bug 1489379] Comment bridged from LTC Bugzilla
--- Comment From cha...@us.ibm.com 2015-09-16 01:07 EDT--- I can see the multipath choices on the installation menu and able to install the rootvg on one of the multipath disk using SAN storages. System boots up normal after all. -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to multipath-tools in Ubuntu. https://bugs.launchpad.net/bugs/1489379 Title: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs
[Bug 1489379] Comment bridged from LTC Bugzilla
--- Comment From mauri...@br.ibm.com 2015-09-03 12:25 EDT--- > Okay, using a custom libchecktur.so built without -fexceptions.. > It works fine in the installer environment, for its purposes. > This should be OK as there's no multipathd (which exercises the path checkers > more) running in the installer. > I'll formalize/support this in another comment. The only places that pthread_cancel() is called in libchecktur.so (tur.c + libsg.c) are 2 functions in tur.c: 1) libcheck_free() 2) libcheck_check() And their calls to pthread_cancel() are /not/ exercised when /not/ in daemon mode (i.e., running as multipath, not multipathd; as in the installer). It's only in daemon mode that the checker goes into async mode -- via get_state() -> checker_set_async(). - And it's only in async mode that libcheck_check() might call pthread_cancel(), - And it's only in async mode that libcheck_check() might set 'holders' to a value for which libcheck_free() might call pthread_cancel() (holders > 1). file libmultipath/discovery.c: get_state (struct path * pp, int daemon) { ... condlog(3, "%s: get_state", pp->dev); if (!checker_selected(c)) { ... select_checker(pp); if (!checker_selected(c)) { condlog(3, "%s: No checker selected", pp->dev); return PATH_UNCHECKED; } ... if (daemon) checker_set_async(c); file libmultipath/checkers.c: void checker_set_async (struct checker * c) { if (!c) return; c->sync = 0; } file libmultipath/checkers/tur.c: extern int libcheck_check (struct checker * c) { ... if (c->sync) return tur_check(c->fd, c->timeout, c->message); /* * Async mode */ ... if (ct->running) { ... if (tur_check_async_timeout(c)) { condlog(3, "%d:%d: tur checker timeout", TUR_DEVT(ct)); pthread_cancel(ct->thread); ... /* Start new TUR checker */ ... ct->holders++; int libcheck_init (struct checker * c) { ... ct->holders = 1; ... void libcheck_free (struct checker * c) ... ct->holders--; ... if (holders) pthread_cancel(thread); ... --- Comment From mauri...@br.ibm.com 2015-09-03 12:28 EDT--- Given the supporting evidence provided, I'll work on a patch to build multipath-udeb without -fexceptions. (In reply to comment #22) > Fortunately enough, the *only* ELF (binary/shared-library) in the > multipath-udeb that requires libgcc_s is... libchecktur.so (In reply to comment #23) > Okay, using a custom libchecktur.so built without -fexceptions.. > It works fine in the installer environment, for its purposes. > > This should be OK as there's no multipathd (which exercises the path > checkers more) running in the installer. (In reply to comment #24) > The only places that pthread_cancel() is called in libchecktur.so (tur.c + > libsg.c) are 2 functions in tur.c: ... > And their calls to pthread_cancel() are /not/ exercised when /not/ in daemon > mode > (i.e., running as multipath, not multipathd; as in the installer). -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to multipath-tools in Ubuntu. https://bugs.launchpad.net/bugs/1489379 Title: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs
[Bug 1489379] Comment bridged from LTC Bugzilla
--- Comment From mauri...@br.ibm.com 2015-09-03 11:56 EDT--- Okay, using a custom libchecktur.so built without -fexceptions.. It works fine in the installer environment, for its purposes. This should be OK as there's no multipathd (which exercises the path checkers more) running in the installer. I'll formalize/support this in another comment. ~ # ls /lib/powerpc64le-linux-gnu/libgcc_s.so.1 ls: /lib/powerpc64le-linux-gnu/libgcc_s.so.1: No such file or directory ~ # grep libgcc_s /lib/multipath/libchecktur.so ~ # ~ # grep libgcc_s /lib/multipath/libchecktur.so.orig libgcc_s.so.1 ~ # ~ # multipath -v3 ... <...> | sda: get_state <...> | loading /lib/multipath/libchecktur.so checker <...> | sda: path checker = tur (config file default) ... <...> | sdb: get_state <...> | sdb: path checker = tur (config file default) ... = paths list = uuid hcildev dev_t pri dm_st chk_st vend/prod/re 0QEMU_QEMU_HARDDISK_helloworld 0:0:1:0 sda 8:0 1 undef ready QEMU,QEMU HA 0QEMU_QEMU_HARDDISK_helloworld 0:0:2:0 sdb 8:16 1 undef ready QEMU,QEMU HA ... create: mpatha (0QEMU_QEMU_HARDDISK_helloworld) undef QEMU,QEMU HARDDISK size=128G features='0' hwhandler='0' wp=undef |-+- policy='round-robin 0' prio=1 status=undef | `- 0:0:1:0 sda 8:0 undef ready running `-+- policy='round-robin 0' prio=1 status=undef `- 0:0:2:0 sdb 8:16 undef ready running <...> | tur checker refcount 2 <...> | const prioritizer refcount 2 <...> | tur checker refcount 1 <...> | const prioritizer refcount 1 <...> | unloading const prioritizer <...> | unloading tur checker <...> | unloading directio checker ~ # echo $? 0 -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to multipath-tools in Ubuntu. https://bugs.launchpad.net/bugs/1489379 Title: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs
[Bug 1489379] Comment bridged from LTC Bugzilla
--- Comment From mauri...@br.ibm.com 2015-09-03 11:26 EDT--- Fortunately enough, the *only* ELF (binary/shared-library) in the multipath-udeb that requires libgcc_s is... libchecktur.so (C'mon.. otherwise we wouldn't be doing this :-) $ dpkg-buildpackage ... $ find debian/tmp-multipath-udeb/ \ | while read file; do \ file $file | grep -q ELF || continue objdump -x $file | grep -q 'NEEDED.*libgcc_s' || continue echo "$file needs libgcc_s" done debian/tmp-multipath-udeb/lib/multipath/libchecktur.so needs libgcc_s $ -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to multipath-tools in Ubuntu. https://bugs.launchpad.net/bugs/1489379 Title: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs
[Bug 1489379] Comment bridged from LTC Bugzilla
--- Comment From mauri...@br.ibm.com 2015-09-03 11:11 EDT--- How to put libgcc_s.so.1 (from the udeb package) in the installer environment, for testing/work-around purposes: 1) Go to https://launchpad.net/ubuntu/wily/ppc64el/libgcc1/ 2) Click the latest (top-most) "Version" link (e.g., 1:5.2.1-15ubuntu5) from the Release "Pocket" (unless you know you should use Proposed) 3) Copy the link address of the ".deb" file in the "Downloadable files" section (e.g., http://.../libgcc1_5.2.1-15ubuntu5_ppc64el.deb) 4) On the installer, right after network configuration (username configuration stage), select "Go Back", and "Execute a shell" 5) Run the following commands: ~ # wget http://launchpadlibrarian.net/215539827/libgcc1_5.2.1-15ubuntu5_ppc64el.deb ~ # ar x libgcc1_*.deb ~ # xzcat data.tar.xz | tar x ./lib/powerpc64le-linux-gnu/libgcc_s.so.1 -C / ~ # exit ~ # ls /lib/powerpc64le-linux-gnu/libgcc_s.so.1 /lib/powerpc64le-linux-gnu/libgcc_s.so.1 The result with the previous test binary as well (multipath in previous comment): ~ # ./test ~ # --- Comment From mauri...@br.ibm.com 2015-09-03 11:13 EDT--- Oops > How to put libgcc_s.so.1 (from the udeb package) in the installer s/udeb/libgcc1 deb/ -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to multipath-tools in Ubuntu. https://bugs.launchpad.net/bugs/1489379 Title: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs
[Bug 1489379] Comment bridged from LTC Bugzilla
--- Comment From mauri...@br.ibm.com 2015-09-03 11:05 EDT--- How to reproduce with QEMU/KVM (2 arguments as "-drive file=test.qcow2,serial=helloworld") Force the path checker to tur: ~ # cat /etc/multipath.conf defaults { user_friendly_names yes path_checker tur } blacklist_exceptions { property ID_SERIAL } Notice the dlopen() error, and paths got no uuids, thus blacklisted: ~ # multipath -v3 ... <...> | sda: udev property ID_SERIAL whitelisted ... <...> | sda: vendor = QEMU <...> | sda: product = QEMU HARDDISK <...> | sda: rev = 2.2. <...> | sda: h:b:t:l = 0:0:1:0 ... <...> | sda: serial = helloworld <...> | sda: get_state <...> | loading /lib/multipath/libchecktur.so checker <...> | A dynamic linking error occurred: (libgcc_s.so.1: cannot open shared object file: No such file or directory) <...> | unloading tur checker <...> | sda: path checker = (config file default) <...> | sda: checker timeout = 30 ms (internal default) <...> | sda: No checker selected <...> | sdb: udev property ID_SERIAL whitelisted ... <...> | sdb: vendor = QEMU <...> | sdb: product = QEMU HARDDISK <...> | sdb: rev = 2.2. <...> | sdb: h:b:t:l = 0:0:2:0 ... <...> | sdb: serial = helloworld <...> | sdb: get_state <...> | loading /lib/multipath/libchecktur.so checker <...> | A dynamic linking error occurred: (libgcc_s.so.1: cannot open shared object file: No such file or directory) <...> | unloading tur checker <...> | sdb: path checker = (config file default) <...> | sdb: checker timeout = 30 ms (internal default) <...> | sdb: No checker selected <...> | loop0: blacklisted, udev property missing ... = paths list = uuid hcildev dev_t pri dm_st chk_st vend/prod/rev dev_st 0:0:1:0 sda 8:0 -1 undef faulty QEMU,QEMU HARDDISK running 0:0:2:0 sdb 8:16 -1 undef faulty QEMU,QEMU HARDDISK running <...> | sda: orphan path, wwid blacklisted <...> | sdb: orphan path, wwid blacklisted ... ~ # --- Comment From mauri...@br.ibm.com 2015-09-03 11:10 EDT--- And if you manually put libgcc_s.so.1 (from the libgcc1 deb package), it works fine. ~ # ls /lib/powerpc64le-linux-gnu/libgcc_s.so.1 /lib/powerpc64le-linux-gnu/libgcc_s.so.1 ~ # multipath -v3 ... <...> | sda: udev property ID_SERIAL whitelisted ... <...> | sda: serial = helloworld <...> | sda: get_state <...> | loading /lib/multipath/libchecktur.so checker <...> | sda: path checker = tur (config file default) <...> | sda: checker timeout = 30 ms (internal default) <...> | sda: state = up <...> | sda: uid_attribute = ID_SERIAL (internal default) <...> | sda: uid = 0QEMU_QEMU_HARDDISK_helloworld (udev) <...> | sda: detect_prio = 1 (config file default) <...> | sda: prio = const (internal default) <...> | sda: prio args = (internal default) <...> | sda: const prio = 1 <...> | sdb: udev property ID_SERIAL whitelisted ... <...> | sdb: serial = helloworld <...> | sdb: get_state <...> | sdb: path checker = tur (config file default) <...> | sdb: checker timeout = 30 ms (internal default) <...> | sdb: state = up <...> | sdb: uid_attribute = ID_SERIAL (internal default) <...> | sdb: uid = 0QEMU_QEMU_HARDDISK_helloworld (udev) <...> | sdb: detect_prio = 1 (config file default) <...> | sdb: prio = const (internal default) <...> | sdb: prio args = (internal default) <...> | sdb: const prio = 1 <...> | loop0: blacklisted, udev property missing ... = paths list = uuid hcildev dev_t pri dm_st chk_st vend/prod/re 0QEMU_QEMU_HARDDISK_helloworld 0:0:1:0 sda 8:0 1 undef ready QEMU,QEMU HA 0QEMU_QEMU_HARDDISK_helloworld 0:0:2:0 sdb 8:16 1 undef ready QEMU,QEMU HA ... ... create: mpatha (0QEMU_QEMU_HARDDISK_helloworld) undef QEMU,QEMU HARDDISK size=128G features='0' hwhandler='0' wp=undef |-+- policy='round-robin 0' prio=1 status=undef | `- 0:0:1:0 sda 8:0 undef ready running `-+- policy='round-robin 0' prio=1 status=undef `- 0:0:2:0 sdb 8:16 undef ready running <...> | tur checker refcount 2 <...> | const prioritizer refcount 2 <...> | tur checker refcount 1 <...> | const prioritizer refcount 1 <...> | unloading const prioritizer <...> | unloading tur checker <...> | unloading directio checker -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to multipath-tools in Ubuntu. https://bugs.launchpad.net/bugs/1489379 Title: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs
[Bug 1489379] Comment bridged from LTC Bugzilla
--- Comment From mauri...@br.ibm.com 2015-09-03 10:18 EDT--- Some developer-backed reference for this as well: (In reply to comment #15) > libchecktur.so really requires a dynamic libgcc because it uses pthreads > (namely pthread_cancel). """ > Wonder if someone can explain why pthread_cancel_init() dlopens > libgcc_s.so.1? Thread cancellation requires unwinding which is implemented by compiler helper routines. """ -- https://sourceware.org/ml/libc-help/2009-10/msg00023.html -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to multipath-tools in Ubuntu. https://bugs.launchpad.net/bugs/1489379 Title: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs
[Bug 1489379] Comment bridged from LTC Bugzilla
--- Comment From mauri...@br.ibm.com 2015-09-02 22:11 EDT--- Today's work on this.. This is not so simple to "fix". libchecktur.so really requires a dynamic libgcc because it uses pthreads (namely pthread_cancel). it can go without a link-time dependency on libgcc *if* it's not built with -fexceptions. it will run, but crash when pthread_cancel() is called. I think this is already happening w/ other pieces of the code (libmultipath, iirc) - it's just luck it didn't crash yet. Some testing/experiments. $ cat test.c #include #include void * loop(void *arg) { } int main() { pthread_t thread; pthread_create(&thread, NULL, &loop, NULL); pthread_cancel(thread); // this requires libgcc_s.so return 0; } $ gcc -pthread -o test test.c $ ./test; echo $? 0 $ ldd test linux-vdso64.so.1 => (0x3fff8173) libpthread.so.0 => /lib/powerpc64le-linux-gnu/libpthread.so.0 (0x3fff816e) libc.so.6 => /lib/powerpc64le-linux-gnu/libc.so.6 (0x3fff8150) /lib64/ld64.so.2 (0x5013) ^ notice there's no dependency on libgcc_s at link-time, it's a run-time dlopen() in pthread_cancel_init() $ find /lib -name libgcc_s.so.1 /lib/powerpc64le-linux-gnu/libgcc_s.so.1 On installer: ~ # ./test libgcc_s.so.1 must be installed for pthread_cancel to work Aborted ~ # find /lib -name libgcc_s.so.1 ~ # To be continued. -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to multipath-tools in Ubuntu. https://bugs.launchpad.net/bugs/1489379 Title: LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs