Yeah, it looks to me like that code would resolve this issue. What I don't understand, however, is why the pre-init-catch-tag, which that patch added, didn't resolve the issue. Is this a difference between catch tags and prompts?
Noah On Thu, Oct 14, 2010 at 7:36 PM, Mike Gran <spk...@yahoo.com> wrote: >> From: Noah Lavine <noah.b.lav...@gmail.com> >> >> Hello, >> >> I got into a situation just now when Guile was generating an error >> very early in the boot process (it was loading some objcode from >> scm_init_eval_in_scheme(), I think, although I haven't looked enough >> to be sure). The fun part is, instead of printing an error message, it >> got into an infinite recursion that eventually ended in a memory >> fault. >> >> The reason is that scm_error_scm in error.c calls scm_ithrow (error.c:315), >> which finds its way through scm_throw and some VM calls to >> pre_init_throw (throw.c:495) >> which in turn gets it to scm_at_abort, which goes to scm_c_abort, >> which finally calls scm_misc_error (control.c:210) because it can't >> find a prompt on the dynamic stack because the error is too early, >> which leads back to scm_error_scm again. > > Hi Noah, > > FWIW, I also noticed the infinite recusion problem in bug #30162. > > http://savannah.gnu.org/bugs/?30162 > > At the time, I thought that the following revision might be the one > that caused the problem. > > http://git.savannah.gnu.org/cgit/guile.git/commit/?id=c6a32a2cd59190dcf17c7fb3022588f56079a03e > > > -Mike >