2.4.0 plan for #12215 [LyX crashes with async processes (Qt6 only)] ?

Richard Kimberly Heck rikiheck at gmail.com
Wed Nov 23 03:13:38 UTC 2022


On 11/21/22 01:18, Jürgen Spitzmüller wrote:
> Am Sonntag, dem 20.11.2022 um 18:43 -0500 schrieb Richard Kimberly
> Heck:
>> If I remember correctly, there are little crashing programs in the Qt
>> and GCC bug reports. Can you try compiling those and see if they
>> crash?
> Not full programs AFAICS.
>
>> That at least will help pinpoint where the problem is. I guess I'm
>> wondering if the problem is still in Qt itself somehow.
> I still think it is due to the way we use QFuture(Watcher).

Here's the program to check:

#define _GLIBCXX_DEBUG 1
#include <unordered_set>

int main()
{
   std::unordered_set<int>::iterator it{};
   it == it;
}

That's what was crashing in GCC.

I did notice, too, though in the Qt report that it says:


In general, from the LyX bug report, it looks like they're building LyX 
but not Qt with debug iterators enabled.

That is a bad idea. libstdc++ debug mode breaks ABI. I don't think we 
ever return any QMap in Qt across its library boundary, but if we did, 
they couldn't use it.

If you want to turn on debug mode globally, you need to rebuild any 3rd 
party dependency with it. Of course there are the containers in the 
debug namespace, but I haven't found a good solution to use them at 
large in a project. I've tried to isolate them in a local namespace, but 
people won't use MyNS::vector (which is either std::vector or 
stddebug::vector), they'll just use std::vector.


So, maybe the problem is very specific to --enable-stdlib-debug and has 
to do with the way we use external libraries.

Riki




More information about the lyx-devel mailing list