Subject: Re: Repeatable crash sequence...
From: Shaw Terwilliger (sterwill@abisource.com)
Date: Wed Sep 13 2000 - 16:10:51 CDT
Bruce Pearson wrote:
> I should be able to fix this problem in a straight forward manner.
[This comment isn't necessarily directed at Bruce, but I think it's
related to the spell check timers]
Today I was using the builds we did for 0.7.11 (which should be out soon) and
found a pretty nasty little bug. If I open a document and change zoom
levels before the spell checking is done on the displayed page, I get
a timer-related segfault. It looks like AbiWord is destroying or changing
some important part of the document view as it does the zoom change, and
a timer fires with pointers to the old pieces.
The backtrace doesn't tell me much, but maybe someone who's been looking
at the timer code will recognize something:
(gdb) bt
#0 0x28387a5f in ?? ()
#1 0x8101374 in _Timer_Proc (p=0x837ace0) at ut_unixTimer.cpp:61
#2 0x401c01fa in g_main_set_poll_func () from /usr/lib/libglib-1.2.so.0
#3 0x401bf2d9 in g_get_current_time () from /usr/lib/libglib-1.2.so.0
#4 0x401bf8e3 in g_get_current_time () from /usr/lib/libglib-1.2.so.0
#5 0x401bfa7c in g_main_run () from /usr/lib/libglib-1.2.so.0
#6 0x400e11e7 in gtk_main () from /usr/lib/libgtk-1.2.so.0
#7 0x80af5ec in AP_UnixApp::main (szAppName=0x8206908 "AbiWord Personal",
argc=1, argv=0xbffffb84) at ap_UnixApp.cpp:895
#8 0x809cbfb in main (argc=1, argv=0xbffffb84) at UnixMain.cpp:24
#9 0x40301a42 in __libc_start_main () from /lib/libc.so.6
(gdb)
Frame #1 is dying within the pTimer->fire() call. Here's frame #1's
implementation for quick reference (it's been a long time since I deconstructed
a UT_Timer):
static int _Timer_Proc(void *p)
{
UT_UNIXTimer* pTimer = (UT_UNIXTimer*) p;
UT_ASSERT(pTimer);
// UT_DEBUGMSG(("ut_unixTimer.cpp: timer fire\n"));
pTimer->fire();
/*
We need to manually reset the timer here. This cross-platform
timer was designed to emulate the semantics of Win32 timers,
which continually fire until they are killed.
*/
pTimer->resetIfStarted();
return 0;
}
-- Shaw Terwilliger <sterwill@abisource.com>
This archive was generated by hypermail 2b25 : Wed Sep 13 2000 - 16:10:53 CDT