Open esc opened 3 years ago
Does this happen every time? If you, can you check if master
suffers the same problem?
Happens every time yes, is fine on master.
Can you run with python fault handling enabled so that we get a traceback?
@eric-wieser sure, could you point me at some documentation on how to do that?
It looks like its supposed to be enabled by default... https://docs.pytest.org/en/stable/usage.html#fault-handler
Using python3 -X faulthandler -m pytest
instead of pytest
might force it to jump into action
Yeah, I think this didn't really get us any further:
zsh» python3 -X faulthandler -m pytest clifford/test/test_cga.py::test_round_from_center_radius_init
========================================================================= test session starts =========================================================================
platform darwin -- Python 3.7.9, pytest-6.1.1, py-1.9.0, pluggy-0.13.1
rootdir: /Users/esc/git/numba-integration-testing/clifford, configfile: setup.cfg
collected 1 item
clifford/test/test_cga.py [1] 62305 abort (core dumped) python3 -X faulthandler -m pytest
python3 -X faulthandler -m pytest 15.51s user 7.18s system 129% cpu 17.489 total
FWIW: I also tried to use lldb
but didn't get anything useful:
zsh» lldb -- python -m pytest -v clifford/test/test_cga.py::test_round_from_center_radius_init
(lldb) target create "python"
Current executable set to 'python' (x86_64).
(lldb) settings set -- target.run-args "-m" "pytest" "-v" "clifford/test/test_cga.py::test_round_from_center_radius_init"
(lldb) run
Process 59350 launched: '/Users/esc/miniconda3/envs/clifford/bin/python' (x86_64)
============================= test session starts ==============================
platform darwin -- Python 3.7.9, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /Users/esc/miniconda3/envs/clifford/bin/python
cachedir: .pytest_cache
rootdir: /Users/esc/git/clifford, configfile: setup.cfg
collected 1 item
clifford/test/test_cga.py::test_round_from_center_radius_init Process 59350 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x00007fff69af633a
-> 0x7fff69af633a: jae 0x7fff69af6344
0x7fff69af633c: movq %rax, %rdi
0x7fff69af633f: jmp 0x7fff69af0629
0x7fff69af6344: retq
Target 0: (_fblas.cpython-37m-darwin.so) stopped.
Can you diagnose which line is failing by inserting print statements between each line of the test?
So, I have some news on this. It seems like pytest
was capturing the stdout/stderr. Adding the -s
flag for no-capture, results in the following.
zsh» pytest -s -v clifford/test/test_cga.py::test_round_from_center_radius_init
========================================================================= test session starts =========================================================================
platform darwin -- Python 3.7.9, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /Users/esc/git/numba-integration-testing/miniconda3/envs/clifford/bin/python
cachedir: .pytest_cache
rootdir: /Users/esc/git/numba-integration-testing/clifford, configfile: setup.cfg
collected 1 item
clifford/test/test_cga.py::test_round_from_center_radius_init OMP: Info #270: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.
the
fish
was
caught
with
Fatal Python error: Cannot recover from stack overflow.
Current thread 0x0000000112d4bdc0 (most recent call first):
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_multivector.py", line 62 in __array__
File "/Users/esc/git/numba-integration-testing/clifford/clifford/_mvarray.py", line 19 in __new__
...
[3] 77832 abort (core dumped) pytest -s -v clifford/test/test_cga.py::test_round_from_center_radius_init
pytest -s -v clifford/test/test_cga.py::test_round_from_center_radius_init 16.72s user 6.53s system 139% cpu 16.662 total
This is the debugging patch which is responsible for the output lines:
diff --git i/clifford/test/test_cga.py w/clifford/test/test_cga.py
index 618e57ee0d..0fc5e6f8ac 100644
--- i/clifford/test/test_cga.py
+++ w/clifford/test/test_cga.py
@@ -83,13 +83,20 @@ def test_from_points_construction(cga, method):
@pytest.mark.xfail(raises=AssertionError, reason='gh-184')
def test_round_from_center_radius_init(cga):
+ print("the")
blades = cga.layout.blades
+ print("fish")
e1 = blades['e1']
+ print("was")
e2 = blades['e2']
+ print("caught")
c = cga.round((3*e1+4*e2, 5))
+ print("with")
npt.assert_almost_equal(c.center_down, 3*e1+4*e2)
+ print("good")
npt.assert_almost_equal(c.radius, 5)
+ print("intentions")
Looks like it might be the line
npt.assert_almost_equal(c.center_down, 3*e1+4*e2)
Thanks, that gives me plenty to work with. I wonder whether this is actually a numpy incompatibility.
@eric-wieser that was a good hunch, I tried with Numpy 1.18.5 and the test did not segfault.
I imagine this means that this reproduces on windows
And my guess would be that the bug was fixed in clifford by a1b1ba3519612af4d0e0c842ff290ee0f5d25ca1
Either way, thanks for the dive into the cause - I've reported a bug against numpy, which I might take a look at next time I put on my numpy hat.
@eric-wieser shall we keep the issue open? I made the integration tests pass, for now:
I am on OSX Version 10.15.7 -- Steps to reproduce: