version 1.4, 2018/06/28 09:10:49
|
version 1.5, 2018/07/23 21:25:42
|
Line 22 Doing a (please note that also `python36
|
Line 22 Doing a (please note that also `python36
|
Illegal instruction (core dumped) |
Illegal instruction (core dumped) |
Exit 132 |
Exit 132 |
|
|
leads to a SIGILL. Trying to reduce the test case this also happens with just a: |
...where: |
|
|
$ python2.7 -c 'import OpenSSL' |
% gdb -core python2.7.core `which python2.7` |
Illegal instruction (core dumped) |
Reading symbols from /usr/pkg/bin/python2.7...(no debugging symbols found)...done. |
Exit 132 |
[New process 1] |
|
Core was generated by `python2.7'. |
Trying to debug this a bit further we can see: |
Program terminated with signal SIGILL, Illegal instruction. |
|
#0 0x0000f42f5fd00000 in ?? () |
% cat asi.py |
(gdb) bt 5 |
import OpenSSL |
#0 0x0000f42f5fd00000 in ?? () |
% python2.7 -m trace --trace asi.py |
#1 0x0000f42f5fd0a3d0 in restore_errno_only () at c/misc_thread_common.h:43 |
[...] |
#2 0x0000f42f5fbf0f90 in _cffi_f_SSL_library_init (self=<optimized out>, noarg=<optimized out>) |
binding.py(88): for attr in dir(lib): |
at build/temp.netbsd-8.99.22-evbarm-2.7/_openssl.c:51839 |
binding.py(89): if attr not in excluded_names: |
#3 0x0000f42f617606ac in PyEval_EvalFrameEx () from /usr/pkg/lib/libpython2.7.so.1.0 |
binding.py(90): setattr(conditional_lib, attr, getattr(lib, attr)) |
#4 0x0000f42f6175e5c0 in PyEval_EvalCodeEx () from /usr/pkg/lib/libpython2.7.so.1.0 |
binding.py(88): for attr in dir(lib): |
(More stack frames follow...) |
binding.py(89): if attr not in excluded_names: |
(gdb) f 2 |
binding.py(90): setattr(conditional_lib, attr, getattr(lib, attr)) |
#2 0x0000f42f5fbf0f90 in _cffi_f_SSL_library_init (self=<optimized out>, noarg=<optimized out>) |
binding.py(88): for attr in dir(lib): |
at build/temp.netbsd-8.99.22-evbarm-2.7/_openssl.c:51839 |
binding.py(89): if attr not in excluded_names: |
warning: Source file is more recent than executable. |
binding.py(90): setattr(conditional_lib, attr, getattr(lib, attr)) |
51839 _cffi_restore_errno(); |
binding.py(88): for attr in dir(lib): |
(gdb) list |
binding.py(92): return conditional_lib |
51834 _cffi_f_SSL_library_init(PyObject *self, PyObject *noarg) |
binding.py(126): cls._lib_loaded = True |
51835 { |
binding.py(128): cls.lib.SSL_library_init() |
51836 int result; |
Illegal instruction (core dumped) |
51837 |
Exit 132 |
51838 Py_BEGIN_ALLOW_THREADS |
|
51839 _cffi_restore_errno(); |
Please also note that this problem seems limited to `OpenSSL`, `ssl` module |
51840 { result = SSL_library_init(); } |
works. |
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 <restore_errno_only+32> |
|
cpsr 0x60000000 [ EL=0 C Z ] |
|
fpsr 0x3000000 50331648 |
|
fpcr 0x10 16 |
|
(gdb) quit |