Hello,
After doing a gdb backtrace, I see that it crashes on l. 310 of ex.cpp, which is
const ex & tmpex = other.eval(1);
This sounds like a missing hold() in a user-defined function, but might be a GiNaC bug as well.
and it seems that GiNaC goes into an infinite loop trying to construct an expression from basic.
backtrace:
#0 GiNaC::ex::construct_from_basic (other=@0x6b4890) at ex.cpp:293 #1 0x0000000000416509 in GiNaC::symbol::eval (this=0x6b4890, level=1) at /usr/local/include/ginac/ex.h:255 #2 GiNaC::ex::construct_from_basic (other=@0x6b4890) at ex.cpp:293 #3 0x0000000000416509 in GiNaC::symbol::eval (this=0x6b4890, level=1) at /usr/local/include/ginac/ex.h:255 #4 GiNaC::ex::construct_from_basic (other=@0x6b4890) at ex.cpp:293 #5 0x0000000000416509 in GiNaC::symbol::eval (this=0x6b4890, level=1) at /usr/local/include/ginac/ex.h:255 ... (at least 10k of those lines)
The backtrace sort of confirms my idea, but we need the outermost frames to find out what's actually going on. gdb ./that/program [wait until it segfaults] bt -16 and post the output here. Best regards, Alexei