--- wikisrc/users/leot/aarch64_problems.mdwn 2018/06/28 09:10:49 1.4 +++ wikisrc/users/leot/aarch64_problems.mdwn 2018/07/23 21:25:42 1.5 @@ -22,33 +22,102 @@ Doing a (please note that also `python36 Illegal instruction (core dumped) Exit 132 -leads to a SIGILL. Trying to reduce the test case this also happens with just a: +...where: - $ python2.7 -c 'import OpenSSL' - Illegal instruction (core dumped) - Exit 132 - -Trying to debug this a bit further we can see: - - % cat asi.py - import OpenSSL - % python2.7 -m trace --trace asi.py - [...] - binding.py(88): for attr in dir(lib): - binding.py(89): if attr not in excluded_names: - binding.py(90): setattr(conditional_lib, attr, getattr(lib, attr)) - binding.py(88): for attr in dir(lib): - binding.py(89): if attr not in excluded_names: - binding.py(90): setattr(conditional_lib, attr, getattr(lib, attr)) - binding.py(88): for attr in dir(lib): - binding.py(89): if attr not in excluded_names: - binding.py(90): setattr(conditional_lib, attr, getattr(lib, attr)) - binding.py(88): for attr in dir(lib): - binding.py(92): return conditional_lib - binding.py(126): cls._lib_loaded = True - binding.py(128): cls.lib.SSL_library_init() - Illegal instruction (core dumped) - Exit 132 - -Please also note that this problem seems limited to `OpenSSL`, `ssl` module -works. + % gdb -core python2.7.core `which python2.7` + Reading symbols from /usr/pkg/bin/python2.7...(no debugging symbols found)...done. + [New process 1] + Core was generated by `python2.7'. + Program terminated with signal SIGILL, Illegal instruction. + #0 0x0000f42f5fd00000 in ?? () + (gdb) bt 5 + #0 0x0000f42f5fd00000 in ?? () + #1 0x0000f42f5fd0a3d0 in restore_errno_only () at c/misc_thread_common.h:43 + #2 0x0000f42f5fbf0f90 in _cffi_f_SSL_library_init (self=, noarg=) + at build/temp.netbsd-8.99.22-evbarm-2.7/_openssl.c:51839 + #3 0x0000f42f617606ac in PyEval_EvalFrameEx () from /usr/pkg/lib/libpython2.7.so.1.0 + #4 0x0000f42f6175e5c0 in PyEval_EvalCodeEx () from /usr/pkg/lib/libpython2.7.so.1.0 + (More stack frames follow...) + (gdb) f 2 + #2 0x0000f42f5fbf0f90 in _cffi_f_SSL_library_init (self=, noarg=) + at build/temp.netbsd-8.99.22-evbarm-2.7/_openssl.c:51839 + warning: Source file is more recent than executable. + 51839 _cffi_restore_errno(); + (gdb) list + 51834 _cffi_f_SSL_library_init(PyObject *self, PyObject *noarg) + 51835 { + 51836 int result; + 51837 + 51838 Py_BEGIN_ALLOW_THREADS + 51839 _cffi_restore_errno(); + 51840 { result = SSL_library_init(); } + 51841 _cffi_save_errno(); + 51842 Py_END_ALLOW_THREADS + 51843 + (gdb) f 1 + #1 0x0000f42f5fd0a3d0 in restore_errno_only () at c/misc_thread_common.h:43 + 43 static void restore_errno_only(void) { errno = cffi_saved_errno; } + (gdb) list + 38 syntactically valid to use "__thread" with this C compiler. */ + 39 #ifdef USE__THREAD + 40 + 41 static __thread int cffi_saved_errno = 0; + 42 static void save_errno_only(void) { cffi_saved_errno = errno; } + 43 static void restore_errno_only(void) { errno = cffi_saved_errno; } + 44 + 45 #else + 46 + 47 static void save_errno_only(void) + (gdb) disas + Dump of assembler code for function restore_errno_only: + 0x0000f42f5fd0a3b0 <+0>: str x30, [sp, #-16]! + 0x0000f42f5fd0a3b4 <+4>: bl 0xf42f5fd075c0 <__errno@plt> + 0x0000f42f5fd0a3b8 <+8>: mov x2, x0 + 0x0000f42f5fd0a3bc <+12>: mrs x1, tpidr_el0 + 0x0000f42f5fd0a3c0 <+16>: adrp x0, 0xf42f5fd34000 + 0x0000f42f5fd0a3c4 <+20>: ldr x3, [x0, #4088] + 0x0000f42f5fd0a3c8 <+24>: add x0, x0, #0xff8 + 0x0000f42f5fd0a3cc <+28>: blr x3 + => 0x0000f42f5fd0a3d0 <+32>: ldr w0, [x1, x0] + 0x0000f42f5fd0a3d4 <+36>: str w0, [x2] + 0x0000f42f5fd0a3d8 <+40>: ldr x30, [sp], #16 + 0x0000f42f5fd0a3dc <+44>: ret + End of assembler dump. + (gdb) info reg + x0 0xf42f5fd34ff8 268484308324344 + x1 0xf42f61875080 268484336898176 + x2 0xf42f6186c848 268484336863304 + x3 0xf42f5fd00000 268484308107264 + x4 0xf42f5ff3c0b8 268484310450360 + x5 0xf42f60000570 268484311254384 + x6 0x65000000000000 28428972647776256 + x7 0x65 101 + x8 0xf42f6185e000 268484336803840 + x9 0xf42f6185e668 268484336805480 + x10 0xf42f6185e668 268484336805480 + x11 0x1 1 + x12 0x30 48 + x13 0xffffff9264f0 281474969527536 + x14 0x65 101 + x15 0x3 3 + x16 0xf42f615bd730 268484334049072 + x17 0xf42f615ec2c8 268484334240456 + x18 0xf42f615ca1a0 268484334100896 + x19 0xf42f5fc9cea8 268484307701416 + x20 0xf42f5fd9c3c0 268484308747200 + x21 0xf42f61307090 268484331204752 + x22 0xf42f5fcd38e8 268484307925224 + x23 0xf42f5fcd10a0 268484307914912 + x24 0xf42f5fb8c5a8 268484306585000 + x25 0xf42f5fd9c3c0 268484308747200 + x26 0xf42f5fbf0f70 268484306997104 + x27 0xf42f5fdd467e 268484308977278 + x28 0xf42f61307090 268484331204752 + x29 0x0 0 + x30 0xf42f5fd0a3d0 268484308149200 + sp 0xffffff926760 0xffffff926760 + pc 0xf42f5fd0a3d0 0xf42f5fd0a3d0 + cpsr 0x60000000 [ EL=0 C Z ] + fpsr 0x3000000 50331648 + fpcr 0x10 16 + (gdb) quit