mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-14 17:44:13 +02:00
bfa9912c5f
The test interrupted QElectroTech at a random moment inside the dialog's loop and called quitQET() there. Landing inside malloc(), the call waited on the allocator's lock for ever: 1 run in 20 timed out at 120 s, on master too. It now lets the program run on to the start of the main thread's next QEventLoop::processEvents(), between two events, and calls from there; the event loop watchdog wakes the loop every 50 ms. A run could also stop before any dialog: SingleApplication keys a System V shared memory block from a file in the temporary folder, 16 bits of the key varying, and each run killed by gdb leaves its block; once a new run's key fell on one of them (976 here), it refused to start. The run now removes the blocks it leaves, attached to no process, and is tried again (a new binary path, a new key, up to three times) when SingleApplication stops it that way: the scenario never ran. The "dialog entered" marker no longer prints when the program had exited. 60 runs under load, 976 old blocks present: 60 passed, one try repeated. With refuseCloseWhileModal() disabled: 3 of 3 FAIL (signal 6). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>