The package fails to build from source on arm64 and mips64el with
multiple test failures that look similar at first glance. For example,
on arm64:

Fatal Python error: Segmentation fault



Hello,
I tried to collect some more information.

I could just follow that far as a bogus pointer
gets written in NRT_MemInfo_new_varsize_dtor,
which gets later called in nrt_varsize_dtor.

Unfortunately I cannot see where this value originates from.
Below an example debugging session, after a failing build on arm64 hardware.
In below example the bogus pointer has a value of 0xf9000be0d10083ff.

Kind regards,
Bernhard




benutzer@chroot-13-trixie-arm64:~/source/numba/try1/numba-0.59.1+dfsg$ gdb -q 
--args python3.12
Reading symbols from python3.12...
Reading symbols from 
/usr/lib/debug/.build-id/d9/3d40f59d70863566375339beb0f380251a6436.debug...
(gdb) directory /home/benutzer/source/numba/try1/numba-0.59.1+dfsg
Source directories searched: 
/home/benutzer/source/numba/try1/numba-0.59.1+dfsg:$cdir:$cwd
(gdb) set width 0
(gdb) set pagination off
(gdb) set environment 
PYTHONPATH=/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/debian/python3-numba/usr/lib/python3.12/dist-packages:/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/.pybuild/cpython3_3.12_numba/build
(gdb) set environment NUMBA_DEBUGINFO=1
(gdb) set environment NUMBA_OPT=0
(gdb) b nrt.cpp:177
No source file named nrt.cpp.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (nrt.cpp:177) pending.
(gdb) b nrt_varsize_dtor
Function "nrt_varsize_dtor" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 2 (nrt_varsize_dtor) pending.
(gdb) run numba/tests/test_array_iterators.py
Starting program: /usr/bin/python3.12 numba/tests/test_array_iterators.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".

Breakpoint 1.4, NRT_MemInfo_init (mi=0x2056870, data=0x18d2510, size=0, 
dtor=0xfffff5901f28 <pyobject_dtor>, dtor_info=0xffffe93ae7f0, 
external_allocator=0x0) at numba/core/runtime/nrt.cpp:177
177         if (TheMSys.stats.enabled)
(gdb) disa 1.1
(gdb) disa 1.2
(gdb) disa 1.3
(gdb) disa 1.4
(gdb) disa 1.5
(gdb) disa 1.6
(gdb) disa 1.7
(gdb) disa 1.9
(gdb) disa 1.10
(gdb) disa 1.11
(gdb) disa 1.12
(gdb) ignore 1 1
Will ignore next crossing of breakpoint 1.
(gdb) ignore 2 1
Will ignore next crossing of breakpoint 2.
(gdb) cont
Continuing.
......
Breakpoint 1.8, NRT_MemInfo_init (mi=0x29cdbd0, data=0x29bfd90, size=24, 
dtor=<optimized out>, dtor_info=0x0, external_allocator=0x0) at 
numba/core/runtime/nrt.cpp:177
177         if (TheMSys.stats.enabled)
(gdb) print mi
$1 = (NRT_MemInfo *) 0x29cdbd0
(gdb) print *mi
$2 = {refct = std::atomic<unsigned long> = { 1 }, dtor = 0xfffff5903580 
<nrt_varsize_dtor(void*, size_t, void*)>, dtor_info = 0x0, data = 0x29bfd90, size = 
24, external_allocator = 0x0}
(gdb) print &mi->dtor_info
$3 = (void **) 0x29cdbe0
(gdb) watch *(void **) 0x29cdbe0
Hardware watchpoint 3: *(void **) 0x29cdbe0
(gdb) display *(NRT_MemInfo *) 0x29cdbd0
1: *(NRT_MemInfo *) 0x29cdbd0 = {refct = std::atomic<unsigned long> = { 1 }, dtor = 
0xfffff5903580 <nrt_varsize_dtor(void*, size_t, void*)>, dtor_info = 0x0, data = 
0x29bfd90, size = 24, external_allocator = 0x0}
(gdb) cont
Continuing.

Hardware watchpoint 3: *(void **) 0x29cdbe0

Old value = (void *) 0x0
New value = (void *) 0xf9000be0d10083ff
NRT_MemInfo_new_varsize_dtor (size=24, dtor=0xf9000be0d10083ff) at 
numba/core/runtime/nrt.cpp:472
472         return mi;
1: *(NRT_MemInfo *) 0x29cdbd0 = {refct = std::atomic<unsigned long> = { 1 }, dtor = 
0xfffff5903580 <nrt_varsize_dtor(void*, size_t, void*)>, dtor_info = 
0xf9000be0d10083ff, data = 0x29bfd90, size = 24, external_allocator = 0x0}
(gdb) bt 6
#0  NRT_MemInfo_new_varsize_dtor (size=24, dtor=0xf9000be0d10083ff) at 
numba/core/runtime/nrt.cpp:472
#1  0x0000fffff6dbd0f0 in 
numba::cpython::listobj::list_constructor::_3clocals_3e::list_impl[abi:v39][abi:c8tJTC_2fWQI8IW1CiAAYKPM6RBFDjESZRVAJmaQIA](iter_28array_28int64_2c_201d_2c_20A_29_29)
 () at listobj.py:469
#2  0x0000fffff6db91f4 in 
__main__::array_iter_items[abi:v38][abi:c8tJTC_2fWwGaMLShh6CjAIxrKR0t9qKIYaQ0qDQwmMEsTAA_3d_3d](Array<long
 long, 1, A, mutable, aligned>) (arr=...) at test_array_iterators.py:18
#3  0x0000fffff6db9540 in 
cpython::__main__::array_iter_items[abi:v38][abi:c8tJTC_2fWwGaMLShh6CjAIxrKR0t9qKIYaQ0qDQwmMEsTAA_3d_3d](Array<long
 long, 1, A, mutable, aligned>) ()
#4  0x0000ffffeb133e20 in call_cfunc (self=0xfffff6db9380 
<cpython::__main__::array_iter_items[abi:v38][abi:c8tJTC_2fWwGaMLShh6CjAIxrKR0t9qKIYaQ0qDQwmMEsTAA_3d_3d](Array<long
 long, 1, A, mutable, aligned>)>, locals=<optimized out>, cfunc=<built-in method array_iter_items of 
_dynfunc._Closure object at remote 0xffffe79cfb20>, args=<optimized out>, kws=<optimized out>) at 
numba/_dispatcher.cpp:745
#5  Dispatcher_call (self=self@entry=0xffffe7e9d090, 
args=args@entry=(<numpy.ndarray at remote 0xffffe872ccf0>,), kws=kws@entry=0x0) 
at numba/_dispatcher.cpp:1037
(More stack frames follow...)
(gdb) up
#1  0x0000fffff6dbd0f0 in 
numba::cpython::listobj::list_constructor::_3clocals_3e::list_impl[abi:v39][abi:c8tJTC_2fWQI8IW1CiAAYKPM6RBFDjESZRVAJmaQIA](iter_28array_28int64_2c_201d_2c_20A_29_29)
 () at listobj.py:469
469             res = []
(gdb) list
464
465     @lower_builtin(list, types.IterableType)
466     def list_constructor(context, builder, sig, args):
467
468         def list_impl(iterable):
469             res = []
470             res.extend(iterable)
471             return res
472
473         return context.compile_internal(builder, list_impl, sig, args)
(gdb) py-bt
Traceback (most recent call first):
  File 
"/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/numba/tests/test_array_iterators.py",
 line 138, in check_array_iter_items
    self.assertPreciseEqual(cfunc(arr), expected)
  File 
"/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/numba/tests/test_array_iterators.py",
 line 175, in test_array_iter
    self.check_array_iter_items(arr)
  File "/usr/lib/python3.12/unittest/case.py", line 589, in _callTestMethod
    if method() is not None:
  File "/usr/lib/python3.12/unittest/case.py", line 634, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.12/unittest/case.py", line 690, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.12/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.12/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.12/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.12/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.12/unittest/runner.py", line 240, in run
    test(result)
  File "/usr/lib/python3.12/unittest/main.py", line 281, in runTests
    self.result = testRunner.run(self.test)
  File "/usr/lib/python3.12/unittest/main.py", line 105, in __init__
    self.runTests()
  File 
"/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/numba/tests/test_array_iterators.py",
 line 555, in <module>
    unittest.main()
(gdb) up
#2  0x0000fffff6db91f4 in 
__main__::array_iter_items[abi:v38][abi:c8tJTC_2fWwGaMLShh6CjAIxrKR0t9qKIYaQ0qDQwmMEsTAA_3d_3d](Array<long
 long, 1, A, mutable, aligned>) (arr=...) at test_array_iterators.py:18
18          return list(iter(arr))
(gdb) cont
Continuing.

Breakpoint 2, nrt_varsize_dtor (ptr=0x29bfd90, size=96, 
info=0xf9000be0d10083ff) at numba/core/runtime/nrt.cpp:444
444         if (info) {
1: *(NRT_MemInfo *) 0x29cdbd0 = {refct = std::atomic<unsigned long> = { 0 }, dtor = 
0xfffff5903580 <nrt_varsize_dtor(void*, size_t, void*)>, dtor_info = 
0xf9000be0d10083ff, data = 0x29bfd90, size = 96, external_allocator = 0x0}
(gdb) up
#1  0x0000fffff5903da0 in NRT_MemInfo_call_dtor (mi=0x29cdbd0) at 
numba/core/runtime/nrt.cpp:401
401             mi->dtor(mi->data, mi->size, mi->dtor_info);
(gdb) print mi
$4 = (NRT_MemInfo *) 0x29cdbd0
(gdb) bt 6
#0  nrt_varsize_dtor (ptr=0x29bfd90, size=96, info=0xf9000be0d10083ff) at 
numba/core/runtime/nrt.cpp:444
#1  0x0000fffff5903da0 in NRT_MemInfo_call_dtor (mi=0x29cdbd0) at 
numba/core/runtime/nrt.cpp:401
#2  0x0000fffff7fbb1f8 in NRT_decref ()
#3  0x0000fffff6db9638 in 
cpython::__main__::array_iter_items[abi:v38][abi:c8tJTC_2fWwGaMLShh6CjAIxrKR0t9qKIYaQ0qDQwmMEsTAA_3d_3d](Array<long
 long, 1, A, mutable, aligned>) ()
#4  0x0000ffffeb133e20 in call_cfunc (self=0xfffff6db9380 
<cpython::__main__::array_iter_items[abi:v38][abi:c8tJTC_2fWwGaMLShh6CjAIxrKR0t9qKIYaQ0qDQwmMEsTAA_3d_3d](Array<long
 long, 1, A, mutable, aligned>)>, locals=<optimized out>, cfunc=<built-in method array_iter_items of 
_dynfunc._Closure object at remote 0xffffe79cfb20>, args=<optimized out>, kws=<optimized out>) at 
numba/_dispatcher.cpp:745
#5  Dispatcher_call (self=self@entry=0xffffe7e9d090, 
args=args@entry=(<numpy.ndarray at remote 0xffffe872ccf0>,), kws=kws@entry=0x0) 
at numba/_dispatcher.cpp:1037
(More stack frames follow...)
(gdb) py-bt
Traceback (most recent call first):
  File 
"/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/numba/tests/test_array_iterators.py",
 line 138, in check_array_iter_items
    self.assertPreciseEqual(cfunc(arr), expected)
  File 
"/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/numba/tests/test_array_iterators.py",
 line 175, in test_array_iter
    self.check_array_iter_items(arr)
  File "/usr/lib/python3.12/unittest/case.py", line 589, in _callTestMethod
    if method() is not None:
  File "/usr/lib/python3.12/unittest/case.py", line 634, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.12/unittest/case.py", line 690, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.12/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.12/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.12/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.12/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.12/unittest/runner.py", line 240, in run
    test(result)
  File "/usr/lib/python3.12/unittest/main.py", line 281, in runTests
    self.result = testRunner.run(self.test)
  File "/usr/lib/python3.12/unittest/main.py", line 105, in __init__
    self.runTests()
  File 
"/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/numba/tests/test_array_iterators.py",
 line 555, in <module>
    unittest.main()
(gdb) next
448             dtor(ptr);
1: *(NRT_MemInfo *) 0x29cdbd0 = {refct = std::atomic<unsigned long> = { 0 }, dtor = 
0xfffff5903580 <nrt_varsize_dtor(void*, size_t, void*)>, dtor_info = 
0xf9000be0d10083ff, data = 0x29bfd90, size = 96, external_allocator = 0x0}
(gdb)

Program received signal SIGBUS, Bus error.
0x00000be0d10083ff in ?? ()
1: *(NRT_MemInfo *) 0x29cdbd0 = {refct = std::atomic<unsigned long> = { 0 }, dtor = 
0xfffff5903580 <nrt_varsize_dtor(void*, size_t, void*)>, dtor_info = 
0xf9000be0d10083ff, data = 0x29bfd90, size = 96, external_allocator = 0x0}
(gdb) kill
Kill the program being debugged? (y or n) y
[Inferior 1 (process 584) killed]
(gdb) q
benutzer@chroot-13-trixie-arm64:~/source/numba/try1/numba-0.59.1+dfsg$




gdb -q --args python3.12
directory /home/benutzer/source/numba/try1/numba-0.59.1+dfsg
set width 0
set pagination off
set environment 
PYTHONPATH=/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/debian/python3-numba/usr/lib/python3.12/dist-packages:/home/benutzer/source/numba/try1/numba-0.59.1+dfsg/.pybuild/cpython3_3.12_numba/build
set environment NUMBA_DEBUGINFO=1
set environment NUMBA_OPT=0
b nrt.cpp:177
y
b nrt_varsize_dtor
y
run numba/tests/test_array_iterators.py
disa 1.1
disa 1.2
disa 1.3
disa 1.4
disa 1.5
disa 1.6
disa 1.7
disa 1.9
disa 1.10
disa 1.11
disa 1.12
ignore 1 1
ignore 2 1
cont

--
debian-science-maintainers mailing list
debian-science-maintainers@alioth-lists.debian.net
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-science-maintainers

Reply via email to