[Bug: 21.5-b28] another crash on aix
Aidan Kehoe
kehoea at parhasard.net
Wed May 7 17:49:13 EDT 2008
Ar an séiú lá de mí Márta, scríobh Jerry James:
> On Wed, Feb 27, 2008 at 9:27 AM, Stephen J. Turnbull <stephen at xemacs.org> wrote:
> > Thomas Mittelstaedt writes:
> >
> > > #5 0x10004708 in assert_failed (file=0x10337e10 "signal.c", line=730,
> > > expr=0x10337ed4 "QUIT called from within redisplay without being
> > > properly wrapped") at emacs.c:3987
> >
> > This looks like an XEmacs bug.
>
> In protected_menu_item_descriptor_to_widget_value (menubar-x.c), we
> explicitly pass the UNINHIBIT_QUIT flag. The comment above that
> function says that we "need to reenable quit checking, which was
> disabled by next_event_internal() so as to read C-g as an event".
> However, when we do read C-g as an event, we get this crash. I don't
> see a way to fix this without immediately undoing all this work to
> inhibit QUIT again. So the radical solution to this problem is to
> change that flag to INHIBIT_QUIT, which means C-g will not break you
> out of a menu browse gone bad. I don't see a less radical solution
> right now, although I'll think on it some more.
It looks like like the assertion itself may be out of date. It’s in
signal.c, but the referenced Internals manual info page is no longer
there. On the website,
http://www.xemacs.org/Documentation/beta/html/internals_27.html#SEC269 ,
it says:
‘These are now fixed as of November 10, 2004.’
If Ben can say that redisplay is now re-entrant, it we can use the #if 0
part of the code, instead of the FUCKME! part. If he doesn’t, well, we need
more research on our part.
#ifdef ERROR_CHECK_TRAPPING_PROBLEMS
/* Since the code below can call Lisp, make sure that proper wrapping is
in place during redisplay. */
#if 0
assert_with_message
(proper_redisplay_wrapping_in_place (),
"QUIT called from within redisplay without being properly wrapped");
#else
/* FUCKME! It looks like we cannot even check for QUIT, *EVER*, during
redisplay. Checking for quit can dispatch events, which can enter
redisplay recursively, which can trip on
Fatal error: assertion failed, file c:\xemacs\build\src\redisplay.c, line 5532,
!dy->locked
Backtrace given in
(Info-goto-node "(internals)Nasty Bugs due to Reentrancy in Redisplay Structures handling QUIT")
*/
assert_with_message
(!in_display,
"QUIT called from within redisplay without being properly wrapped");
#endif /* 0 */
#endif /* ERROR_CHECK_TRAPPING_PROBLEMS */
--
¿Dónde estará ahora mi sobrino Yoghurtu Nghé, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?
More information about the XEmacs-Beta
mailing list