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.

 <https://www.linkedin.com/in/frank-haferkorn/> (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.

 



 

 

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

Reply via email to