Hi Abdel,

   The svn log on Cursor.cpp shows that you'd transferred some code into 
Cursor::getStatus(). In my latest comments on this bug (#6564), I explain 
what I believe to be the source of heavy crashes with formulas inside tables 
inside this function during the GUI-update finalization.

   The command executes successfully but the GUI update calls the same 
code-path and Cursor::getStatus() thinks it is about to execute a command. 
Therefore, it calls Inset::getStatus()=0 on the *next* inset whereas during 
GUI-update needs to call getStatus on the *current* inset. Is this correct?

   I hope I have been helpful. My work is getting interrupted every 
keystroke! :-)

-- Manoj


On Tuesday 02 March 2010 11:05:43 pm Manoj Rajagopalan wrote:
> Trac comments don't seem to go out to the lyx-devel list so I'm forwarding
> this.
>
> -- Manoj
>
> ----------  Forwarded Message  ----------
>
> Subject: Re: #6564: Crash on moving out of math-cases placed in table cell
> Date: Tuesday 02 March 2010
> From: "LyX Ticket Tracker" <t...@lyx.org>
> To: rma...@umich.edu, lasgout...@lyx.org
>
> #6564: Crash on moving out of math-cases placed in table cell
> ---------------------+-----------------------------------------------------
>- Reporter:  rmanoj   |       Owner:  lasgouttes
>      Type:  defect   |      Status:  new
>  Priority:  normal   |   Milestone:  2.0.0
> Component:  general  |     Version:  2.0.0svn
>  Severity:  normal   |    Keywords:
> ---------------------+-----------------------------------------------------
>-
>
> Comment(by rmanoj):
>
>  The offending line seems to be the LASSERT(asInsetMath()) in
>  CursorSlice::row() at level #6 in the above backtrace. In GDB, at level #6
>  (i.e. within CursorSlice), inset_->asInsetMath() returns 0x0 whereas
>  inset_->asInsetTabular() returns non-zero. Also, inset_->as<other
>  insets>() returns 0x0. This means that the current inset is the text-mode
>  table (InsetTabular).
>
>  My guess is that as we move between the InsetTabular and the enclosed
>  InsetMath derivative, the CursorSlice stack (vector<CursorSlices>
>  Cursor::slices_) is not being adjusted properly.

Reply via email to