Hello, The patch hunk that externs _function arrays looks good. I can take that portion of the patch.
The patch hunk that externs the integers, is not good, as that fails to link libica.so and thus results in the package to fail to build from source, as nothing defines those integers. My confidence levels in libica is very low. Do you have a CI system setup at all the attempts builds and testing on s390x on every commit? In Ubuntu we have some capacity to support that, do you need/want a CI system for libica git? Failure to build below. dh build --with autoreconf dh_auto_build make -j1 make[1]: Entering directory '/home/ubuntu/libica' Making all in src make[2]: Entering directory '/home/ubuntu/libica/src' /bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -pthread -D_LINUX_S390X_ -D_LINUX_S390_ -Wall -O2 -Wl,-Bsymbolic-functions -Wl,-z,relro -o icainfo icainfo.o libica.la libtool: link: gcc -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -pthread -D_LINUX_S390X_ -D_LINUX_S390_ -Wall -O2 -Wl,-Bsymbolic-functions -Wl,-z -Wl,relro -o .libs/icainfo icainfo.o ./.libs/libica.so -pthread ./.libs/libica.so: undefined reference to `tdes_switch' ./.libs/libica.so: undefined reference to `aes192_switch' ./.libs/libica.so: undefined reference to `des_switch' ./.libs/libica.so: undefined reference to `aes256_switch' ./.libs/libica.so: undefined reference to `prng_switch' ./.libs/libica.so: undefined reference to `msa4_switch' ./.libs/libica.so: undefined reference to `msa5_switch' ./.libs/libica.so: undefined reference to `sha512_drng_switch' ./.libs/libica.so: undefined reference to `sha256_switch' ./.libs/libica.so: undefined reference to `aes128_switch' ./.libs/libica.so: undefined reference to `sha1_switch' ./.libs/libica.so: undefined reference to `sha512_switch' collect2: error: ld returned 1 exit status Makefile:484: recipe for target 'icainfo' failed make[2]: *** [icainfo] Error 1 make[2]: Leaving directory '/home/ubuntu/libica/src' Makefile:388: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/home/ubuntu/libica' dh_auto_build: make -j1 returned exit code 2 debian/rules:3: recipe for target 'build' failed make: *** [build] Error 2 Regards, Dimitri. On 19 April 2016 at 10:30, Launchpad Bug Tracker <[email protected]> wrote: > bugproxy (bugproxy) has assigned this bug to you for Ubuntu: > > == Comment: #0 - Christian Rund <[email protected]> - 2016-04-19 > 04:39:32 == > When building the included test cases from the libica-2.6.1 package we ran > into a bad memory access scenario (segmentation fault). > > To reproduce: > 1) Unpack and compile libica-2.6.1.tar.gz from Sourceforge on an Ubuntu 16.04 > instance, kernel 4.4.0-17-generic. > 2) cd libica-2.6.1/src/tests > 3) ./icastats_test > > To enable writing core files, enter ulimit -c unlimited > > Observe: > libicastats_test core dumps as follows: > > ulimit -c unlimited > > less /var/log/apport.log > ERROR: apport (pid 21597) Mon Apr 11 11:02:14 2016: called for pid 21596, > signal 11, core limit 0 > ERROR: apport (pid 21597) Mon Apr 11 11:02:14 2016: executable: > /root/crypto/libica-2.6.0/src/tests/icastats_test (command line > "./icastats_test") > ERROR: apport (pid 21597) Mon Apr 11 11:02:14 2016: executable does not > belong to a package, ignoring > > (gdb) run > Starting program: /root/crypto/libica-2.6.1/src/tests/icastats_test > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/s390x-linux-gnu/libthread_db.so.1". > > Program received signal SIGSEGV, Segmentation fault. > 0x000003fffde979fa in set_switches () from > /usr/lib/s390x-linux-gnu/libica.so.2 > (gdb) bt > #0 0x000003fffde979fa in set_switches () from > /usr/lib/s390x-linux-gnu/libica.so.2 > #1 0x000003fffde863a2 in icainit () from /usr/lib/s390x-linux-gnu/libica.so.2 > #2 0x000003fffdf90aba in call_init (l=<optimized out>, argc=argc@entry=1, > argv=argv@entry=0x3fffffff5d8, > env=env@entry=0x3fffffff5e8) at dl-init.c:72 > #3 0x000003fffdf90bc8 in call_init (env=<optimized out>, argv=<optimized > out>, argc=<optimized out>, l=<optimized out>) > at dl-init.c:30 > #4 _dl_init (main_map=0x3fffdfa6158, argc=<optimized out>, > argv=0x3fffffff5d8, env=0x3fffffff5e8) at dl-init.c:120 > #5 0x000003fffdf80f7c in _dl_start_user () from /lib/ld64.so.1 > > Dump of assembler code for function set_switches: > 0x000003fffde97988 <+0>: stmg %r9,%r15,72(%r15) > 0x000003fffde9798e <+6>: ear %r1,%a0 > 0x000003fffde97992 <+10>: lay %r15,-464(%r15) > 0x000003fffde97998 <+16>: sllg %r1,%r1,32 > 0x000003fffde9799e <+22>: ear %r1,%a1 > 0x000003fffde979a2 <+26>: la %r11,440(%r15) > 0x000003fffde979a6 <+30>: mvc 456(8,%r15),40(%r1) > 0x000003fffde979ac <+36>: xc 440(16,%r15),440(%r15) > 0x000003fffde979b2 <+42>: lgr %r13,%r2 > 0x000003fffde979b6 <+46>: cgijne %r2,0,0x3fffde97ace <set_switches+326> > 0x000003fffde979bc <+52>: lgrl %r5,0x3fffdea3400 > 0x000003fffde979c2 <+58>: lhi %r0,128 > 0x000003fffde979c6 <+62>: aghik %r2,%r5,4 > 0x000003fffde979cc <+68>: aghi %r5,244 > 0x000003fffde979d0 <+72>: l %r1,0(%r2) > 0x000003fffde979d4 <+76>: lg %r3,4(%r2) > 0x000003fffde979da <+82>: risbgn %r4,%r1,60,191,125 > 0x000003fffde979e0 <+88>: nilf %r1,7 > 0x000003fffde979e6 <+94>: llc %r4,440(%r4,%r15) > 0x000003fffde979ec <+100>: srak %r1,%r0,0(%r1) > 0x000003fffde979f2 <+106>: nr %r1,%r4 > 0x000003fffde979f4 <+108>: lcr %r1,%r1 > 0x000003fffde979f6 <+110>: srl %r1,31 > => 0x000003fffde979fa <+114>: st %r1,0(%r3) > 0x000003fffde979fe <+118>: aghi %r2,16 > 0x000003fffde97a02 <+122>: cgrjne %r5,%r2,0x3fffde979d0 > <set_switches+72> > > (gdb) info line *0x000003fffde979fa > No line number information available for address 0x3fffde979fa > <set_switches+114> > // I tried to add the src directory, change gcc Options and recompiled - but > did not get line > // numbers in - sorry. > > (gdb) info registers > r0 0x80 128 > r1 0xffffffff00000001 18446744069414584321 > r2 0x2aa000082e4 2929167729380 > r3 0x0 0 > r4 0xf0 240 > r5 0x2aa000083d4 2929167729620 > r6 0x0 0 > r7 0x3fffffff5e8 4398046508520 > r8 0x3fffffff5e8 4398046508520 > r9 0x3fffffff220 4398046507552 > r10 0x3fffffff2a0 4398046507680 > r11 0x3fffffff338 4398046507832 > r12 0x3fffdfa5000 4398012583936 > r13 0x5 5 > r14 0x3fffde97b14 4398011480852 > r15 0x3fffffff180 4398046507392 > pc 0x3fffde979fa 0x3fffde979fa <set_switches+114> > cc 0x1 1 > > == Comment: #1 - Ingo Tuchscherer <[email protected]> - 2016-04-19 > 05:12:46 == > The initialization of the s390 hardware switches was not done correctly. > This could lead to illegal access and segmentation fault. > > Changed declaration of hardware switches to ensure uniqueness across compile > units and thereby proper initialization. > > An appropriate fix is available on sourceforge: > > https://sourceforge.net/p/opencryptoki/libica/ci/b73a9c6bcfded1f15cb02692fe5ed38fad05c8a0/ > > == Comment: #2 - Heinz-Werner Seeck <[email protected]> - > 2016-04-19 05:16:35 == > Canonical, when can this be integrated? > > ** Affects: ubuntu > Importance: Undecided > Assignee: Skipper Bug Screeners (skipper-screen-team) > Status: New > > > ** Tags: architecture-s39064 bugnameltc-140457 severity-medium > targetmilestone-inin1604 > -- > segmentation fault occurred during libica-2.6.1 tests > https://bugs.launchpad.net/bugs/1572039 > You received this bug notification because you are a member of Skipper Bug > Screeners, which is a bug assignee. -- Regards, Dimitri. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1572039 Title: segmentation fault occurred during libica-2.6.1 tests To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/libica/+bug/1572039/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
