Re: Crash in GDBM when SDL2 is cleaned-up using atexit
Sylvain Becker <[email protected]>
| Newsgroups | gmane.comp.video.mesa3d.user |
|---|---|
| Message-ID | <CADsB45p7G9eQzzwnFFYfYg7OK5P4YqT-zHkLB8FHpYt8LTx+_g@mail.gmail.com> |
On Mon, 25 Mar 2019 at 09:13, Pekka Paalanen <[email protected]> wrote: > On Sat, 23 Mar 2019 14:28:16 +0100 > Sylvain Becker <[email protected]> wrote: > > > Hi, > > > > There is a crash when an SDL2 game (Exult), using KMS-DRM back-end, > > terminates. > > It appears in GBM (gbm_device_destroy()), there migh be also invalid > access > > in egl datas. > > > > SDL2 issue can be found at > https://bugzilla.libsdl.org/show_bug.cgi?id=4530 > > (with a very small test case) > > Exult game at https://github.com/exult > > > > It occurs because: > > - Mesa uses atexit() > > - Exult game also chooses atexit() to clean up SDL2 internals. (e.g > > atexit(SDL_Quit)) > > > > Depending on how atexit callbacks are sorted/registered : > > - Mesa cleans up first GBM with an atexit(). > > - If SDL2 tries to clean up things once again and it crashes. > > > > This is reported for SDL2, but any layer using atexit() and GBM could > > reproduce the same crash. > > > > There are surely several ways to avoid this, but I wonder what you would > > advice to solve this. > > Hi, > > my personal opinion is that the use of atexit() is almost always a bad > idea, both for the app and Mesa. I'm not a Mesa developer and I don't > know why Mesa wanted to use it, but I can imagine it is a compromise > between bad choices - I'm sure they know the caveats of atexit(). Your > problem is a good example of why atexit() should not be used at all. > > It should be much easier to make the game not use atexit(), because it > controls the application main event loop, than Mesa which has no > knowledge of any main loop and therefore cannot reasonably hook up to > its exit sequence on its own. > > > Thanks, > pq > Hi, Thanks for your answer. Indeed not using atexit() is the easiest way. I wish I had an API to detect the library has been terminated. Thanks, Sylvain _______________________________________________ mesa-users mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-users