Frank,

thanks for the high-quality report and suggestion, others will comment
on this in detail.

As to the bug tracker, I created an account and send you the details in
PM.

Best,
Jürgen

Am Dienstag, dem 16.12.2025 um 21:25 +0100 schrieb
[email protected]:
> Herein I ask for  membership for the 
>  * Lyx bug-tracker 
>  * And the lyx-devel mailing-list.
>  * As stated in https://www.lyx.org/trac/wiki/register2 
>    (Direct access is not possible at the moment)
>  
> I REPORTED A SERIOS CRASH problem below..
> I am an experience C++ developer 
> and can help to fix the problem.
> (26) Frank Haferkorn, ErfindER | LinkedIn
>  Greetings,
>                 Frank.Haferkorn
>  
> ?SOLUTION: 
> Do you think it is feasible to compile 
> it as a Win64 and/or using
> typedef int64_t  pos_type ;
>  
> or find another work-around , that I can go on ?
>  
> On a 64 bit windows 10 (Intelx64)  Platform
> I am using Lyx-2.4.4 on my own LyX-Created files
> With 
>  * lots of my custom LyX-Macros and         (not likely the problem)
>  * with a quite huge size.                                 (likewise
> the problem)
>  
> SYMPTOM:
> I have a SERIOUS PROBLEM with repeated CRASHES about every 1-5
> minutes.
> I THINK I FOUND THE REASON.
> I traced an integer  signed-overflow/sign-wrap-around in an 32bit
> integer pos_type variable
> that throws always the same error condition at the code-location.
>  
> THE SITUIATION:
>  * The MASTER  document has about 7  Child-Documents
>  * And at least 2 of the child documents have a size of more than 80
> pages of PDF. (800 kB  PDPs size)
>  
> I had a look at the code. 
> The error is ALWAYS thrown here (src/TextMetrics.cpp line 857)
>  
> int TextMetrics::labelFill(Row const & row) const
> {
> Paragraph const & par = text_->getPar(row.pit());
>     LBUFERR(par.beginOfBody() > 0 || par.isEnvSeparator(0));
>     ^ 
> /// THIS EXCEPTION OSS THOWN                             
>  
> The( ASSERTION criteria beginOfBody() >0 is not met.
>  
> REASONING: 
> @file stddef.h
> #define __PTRDIFFF_TYPE__             long       int
> typedef __PTRDIFFF_TYPE__             ptrdiff_t;
>  
> @file types.h
> typedef ptrdiff_t pos_type:                /// so pos_type
>                has type  long int  (that is a signed 32 bit long )
>  
>  
> The result  of: 
>     @file Paragraph.h
> pos_type                            Paragraph::beginOfBofy()
> leads to a 32-bit integer pos_type which can be(negative (<0).
>  
> PROBABLE DETECTED PROBLEM
>  
> As described, I am editing large LyX-documents.
> Even, when there are malloced memory elements are only span a region
> of 4 GB. 
> If the underlying pointer-difference is greater  2GB away
> That leads to a sign-overflow sign-wrap-around in CASE a ptrdiff_t
> variable  is greater  2GB
>  
> AS A CONSEQUNCE is a faulty signedness (sign-wrap-around signed
> ptrdiff _t)
> And the negative sign in the of par.beginOfBody() > 0  will trigger
> the assertion criteria (of Textmetrics.cpp Line 857)
> An produces CRASHES (for some not always reproducible data-chucks.
>  
>  
>  
> HERE is the ERROR-Message.
>  
>  
>  

-- 
Jürgen
-- 
lyx-devel mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-devel

Reply via email to