|Bill Allombert on Fri, 23 Jun 2006 22:36:55 +0200|
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
On Fri, Jun 23, 2006 at 09:58:03AM +0200, Bernard Parisse wrote: > Hello, > > I have a problem when using flisexpr inside a threaded program > (more precisely I'm adding a pari command to xcas that should be able > to execute any PARI command inside xcas, e.g. pari(Euler)), > it seems related to the PARI_stack_limit check in src/language/anal.c, > line 1959. The &ptr (in a thread call) is (much) lower than PARI_stack_limit > and PARI dies with a Deep recursion error (the same code inside > the readline non-threaded interface icas works correctly). I guess > this check is here to avoid user recursive calls that end with > a SEGFAULT (stack capacity exceeded). > My current fix was to > 1/ declare PARI_stack_limit in src/headers/paridecl.h > 2/ set PARI_stack_limit to 0 in xcas code before calling flisexpr > (more precisely in the file src/pari.cc from giac-0.6.0.tar.gz) > It works but it requires modification in the pari library to build > xcas. Is there another way to do it? Sure, just declare extern void *PARI_stack_limit; in xcas source files. Adding PARI_stack_limit in src/headers/paridecl.h do not change the libpari in any way. Cheers, Bill. P.S. Expect a better answer later on.