Re: repeatable header foot pagenum crasher on win32


Subject: Re: repeatable header foot pagenum crasher on win32
From: Martin Sevior (msevior@mccubbin.ph.unimelb.edu.au)
Date: Sun Sep 23 2001 - 18:14:27 CDT


On Sun, 23 Sep 2001, Matti Picus wrote:

> Summary: Open a new document. Create a header with some text. Create a
> footer with some text. Put the cursor into the header and insert a page
> number into the footer. BOOM.
>

Thanks for the info. If I can find a couple of hours today I should be
able to fix this one.

Cheers

Martin

> Something seems to be fishy with FL_DocLayout::findBlockAtPosition(), here
> is the code snippet that triggers the assert:
> if(pBL->getSectionLayout()->getType() == FL_SECTION_HDRFTR)
> {
> fl_HdrFtrShadow * pShadow = NULL;
> FV_View * pView = getView();
> if(pView && pView->isHdrFtrEdit())
> {
> pShadow = pView->getEditShadow();
> }
> else
> {
> pShadow = ((fl_HdrFtrSectionLayout *)
> pBL->getSectionLayout())->getFirstShadow();
> }
> fl_BlockLayout * ppBL = NULL;
> if(pShadow != NULL)
> ppBL = pShadow->findMatchingBlock(pBL);
> else
> {
>
> The call ppBL = pShadow->findMatchingBlock(pBL) fails, no matching block is
> found.
>
> Could it be a problem that the cursor is in the header but the page number
> is inserted into the footer?
>
> Here is the call stack, for completeness:
> fl_HdrFtrShadow::findMatchingBlock(fl_BlockLayout * 0x00c5fa68) line 2989 +
> 31 bytes
> FL_DocLayout::findBlockAtPosition(unsigned int 62) line 523 + 12 bytes
> FV_View::_findBlockAtPosition(unsigned int 62) line 1395 + 18 bytes
> FV_View::getBlockFormat(const char * * * 0x0012fb48, unsigned char 1) line
> 3469 + 15 bytes
> FV_View::notifyListeners(const unsigned short 1207) line 538
> FV_View::_generalUpdate() line 5526
> FV_View::processPageNumber(HdrFtrType FL_HDRFTR_FOOTER, const char * *
> 0x0012fbe8) line 3147
> s_doInsertPageNumbers(FV_View * 0x00c46768) line 6022
> ap_EditMethods::insPageNo(AV_View * 0x00c46768, EV_EditMethodCallData *
> 0x0012fc44) line 6029 + 9 bytes
> EV_Menu::invokeMenuMethod(AV_View * 0x00c46768, EV_EditMethod * 0x007dc570,
> unsigned short * 0x00000000, unsigned int 0) line 201 + 18 bytes
> EV_Win32Menu::onCommand(AV_View * 0x00c46768, HWND__ * 0x0003032e, unsigned
> int 1087) line 152
> XAP_Win32Frame::_FrameWndProc(HWND__ * 0x0003032e, unsigned int 273,
> unsigned int 1087, long 0) line 410 + 31 bytes
>
> Matti
>
>
> At 01:53 PM 23/9/2001 -0400, you wrote:
> >Alan Horkan wrote:
> > > crash
> > >
> > > this was repeatable on windows 2000 using the
> > > 2001-09-21 build from http://www.niksbiks.dk/Abi/
> >
> >I can duplicate the crash using the same build on Win95 (the OEM version
> >(last)).
> >
> > > Error Message
> > > The instruction at "0x0046eb95" referenced memory at "0x00000084". The
> > > memory could not be "read".
> >
> >I started the debugger and found the PC at that address ("0x0046eb95").
> >The instruction at this address is:
> >mov ecx.dword ptr(eax+84h)
> >
> >For kicks, I then started to read up on and then try a stack trace. Is
> >a stack trace the same as viewing the Call Stack? This was easy enough
> >to do using View --> Debug Windows --> Call Stack. There wasn't much
> >there, just one entry:
> >
> >"ABIWORD 0046eb95()"
> >
> >Randy Kramer
> >Trying to learn so that when I get an unrepeatable crash I can collect
> >useful information.
>
>
>



This archive was generated by hypermail 2b25 : Sun Sep 23 2001 - 18:14:37 CDT