Karim Belabas on Thu, 30 Mar 2006 20:23:58 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Segmentation fault during output() |
* Chris Condrat [2006-03-14 06:08]: > I'm using a CATCH(errpile) {} TRY {} ENDCATCH; block to capture stack > overflows and dump the last-known-good output to a file, before > resetting the avma and starting again. The flow of the program is much > like: > > loop > { > CATCH (errpile) > { > avma = last_known_good_avma; > output(last_known_good_formula); > avma = top_of_the_stack; > // Get ready to start again. > CATCH_RELEASE(); > } TRY { > // computations with garbage collecting which will probably overflow. > } ENDCATCH; > } while(still_more_to_do); > > > This works great for the first four or so runs (that is, overflows), > but on the fifth run, it segmentation faults while attempting to write > the GEN to the output. I have narrowed it down specifically to when > it tries to output the GEN. > > Am I doing something wrong here? Any suggestions would be appreciated as well. I'm not sure. If a stack overflow occurs during 'output(last_known_good_formula)', we're in trouble. Doesn't "random GC" [ using if (low_stack()) constructs ] address your problem with less hassle ? In doubt, feel free to send me your code, I'll have a look. (And possibly post whatever solution I could come with if this turns out to be of general interest.) Cheers, K.B. -- Karim Belabas Tel: (+33) (0)5 40 00 26 17 Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50 351, cours de la Liberation http://www.math.u-bordeaux.fr/~belabas/ F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]