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