kpeeters / cadabra2

A field-theory motivated approach to computer algebra.
https://cadabra.science/
GNU General Public License v3.0
228 stars 37 forks source link

segfault in meld() #241

Open slazav opened 2 years ago

slazav commented 2 years ago

I have Segmentation fault on this code, somewhere in meld():

#!/usr/bin/cadabra2

{a,b,c,i,j,k}::Indices;
{a,b,c,i,j,k}::Integer(1..3);
{ct, st}::Symbol;
\nabla{#}::Derivative;
{st,ct,n_{k}}::Depends(\nabla{#})

{d{#}}::KroneckerDelta;
{e_{a b c}}::EpsilonTensor(delta=d);

rota := R_{a j} = ct d_{a j} + (1-ct) n_{a} n_{j} - st e_{a j k} n_{k};
FGR := \nabla{R_{a k}}_{j} \nabla{R_{a k}}_{j};

substitute(FGR, rota); distribute(_, repeat=True);\
product_rule(_); unwrap(_);\
distribute(_, repeat=True);\
collect_factors(_); sort_product(_); sort_sum(_);\
meld(_);\
;
slazav commented 2 years ago

Thread 1 "python3.9" received signal SIGSEGV, Segmentation fault. 0x00007ffff7658b03 in cadabra::pattern::children_wildcard() const () from /usr/lib/python3/site-packages/cadabra2.cpython-39.so (gdb) bt

0 0x00007ffff7658b03 in cadabra::pattern::children_wildcard() const ()

from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

1 0x00007ffff7648e4d in ?? () from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

2 0x00007ffff77d5000 in ?? () from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

3 0x00007ffff7646c65 in cadabra::index_iterator::operator++() ()

from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

4 0x00007ffff76b273c in cadabra::meld::symmetrize_idents(cadabra::meld::ProjectedTerm&) ()

from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

5 0x00007ffff76b3c5f in cadabra::meld::symmetrize_as_product(cadabra::meld::ProjectedTerm&, std::vector<cadabra::meld::symmetrizer_t, std::allocator > const&) ()

from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

6 0x00007ffff76a9222 in cadabra::meld::apply_tableaux(tree<cadabra::str_node, std::allocator<treenode > >::pre_order_iterator) () from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

7 0x00007ffff76ab051 in cadabra::meld::apply(tree<cadabra::str_node, std::allocator<treenode > >::pre_order_iterator&) () from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

8 0x00007ffff761a70c in cadabra::Algorithm::apply_once(tree<cadabra::str_node, std::allocator<treenode > >::pre_order_iterator&) () from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

9 0x00007ffff761c580 in cadabra::Algorithm::apply_pre_order(bool) ()

from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

10 0x00007ffff76f99a1 in std::shared_ptr cadabra::apply_algo_preorder<cadabra::meld, bool>(std::shared_ptr, bool, bool, bool, unsigned int) () from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

11 0x00007ffff76f2c50 in ?? () from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

12 0x00007ffff7608948 in ?? () from /usr/lib/python3/site-packages/cadabra2.cpython-39.so

13 0x000055555569d5e7 in ?? ()

14 0x000055555568572b in _PyObject_MakeTpCall ()

15 0x0000555555680a29 in _PyEval_EvalFrameDefault ()

16 0x000055555567ac81 in ?? ()

17 0x000055555567a8f7 in _PyEval_EvalCodeWithName ()

18 0x00005555557310c3 in PyEval_EvalCode ()

19 0x000055555573772f in ?? ()

20 0x000055555568d7d1 in ?? ()

21 0x000055555567bfe5 in _PyEval_EvalFrameDefault ()

22 0x000055555567ac81 in ?? ()

23 0x000055555567a8f7 in _PyEval_EvalCodeWithName ()

24 0x00005555557310c3 in PyEval_EvalCode ()

25 0x00005555557407ac in ?? ()

26 0x000055555573c1a4 in ?? ()

27 0x00005555555e9de1 in ?? ()

28 0x00005555555e9650 in PyRun_SimpleFileExFlags ()

29 0x0000555555752033 in Py_RunMain ()

30 0x0000555555723399 in Py_BytesMain ()

31 0x00007ffff7cf81dc in ?? () from /lib64/libc.so.6

32 0x00007ffff7cf8288 in __libc_start_main () from /lib64/libc.so.6

33 0x0000555555723281 in _start ()

kpeeters commented 1 year ago

I cannot reproduce this bug with the current version in the git repo, does this still crash for you?