| Summary: | [PATCH] ralloc: atexit(3) handlers used in dlopened libraries | ||
|---|---|---|---|
| Product: | Mesa | Reporter: | Jean-Sébastien Pédron <dumbbell> |
| Component: | Other | Assignee: | mesa-dev |
| Status: | RESOLVED FIXED | QA Contact: | mesa-dev |
| Severity: | normal | ||
| Priority: | medium | ||
| Version: | 10.6 | ||
| Hardware: | Other | ||
| OS: | FreeBSD | ||
| Whiteboard: | |||
| i915 platform: | i915 features: | ||
| Attachments: |
Patch to use __attribute__((destructor)) in ralloc.c
Patch to use __attribute__((destructor)) in ralloc.c |
||
Created attachment 118120 [details] [review] Patch to use __attribute__((destructor)) in ralloc.c This new patch adds a test for __attribute__((destructor)) in the configure script and hides this attribute behind a "DESTRUCTOR" macro in src/util/macros.h. This is requested by Matt Turner on the mesa-dev@ mailing-list. atexit() no longer exists in src/util/ralloc.{c,h}
|
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 118072 [details] Patch to use __attribute__((destructor)) in ralloc.c Hi! On Linux, atexit(3) handlers are called when the program exits but also when a library is unloaded. The latter behavior is a Glibc extension. On systems where this extension is not supported, this causes an application to crash when, for instance, a library using ralloc is dlclosed: at program exit, the registered function is no longer in memory. For example, this happens with OpenCL applications using an ICD loader on FreeBSD. __attribute__((destructor)) fixes the problem because such handlers are called when a library is unloaded and when the program exits.