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
