| Anonymous | Login | Signup for a new account | 11-10-2008 11:03 PST |
| Main | My View | View Issues | Change Log | Docs |
| Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | ||||||||
| ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||||
| 0000918 | [uClibc] Shared Library Support | major | always | 06-21-06 01:03 | 06-21-06 01:36 | ||||
| Reporter | albrecht | View Status | public | ||||||
| Assigned To | uClibc | ||||||||
| Priority | normal | Resolution | no change required | ||||||
| Status | closed | Product Version | 0.9.26 | ||||||
| Summary | 0000918: dlclose() doesn't call shared object destructor | ||||||||
| Description |
Using the dynamic loader, the constructor and destructor functions should be run when dlopen() or dlclose() are called, respectively. This works properly on any glibc based system, but with uclibc 0.9.26 on an ARM9 board, dlclose() doesn't call the destructor. This is bad as the destructor is responsible to free any dynamically allocated stuff of "plugins" which should be loaded and unloaded dynamically. |
||||||||
| Additional Information |
The attached test case produces the following output on a glibc system (just say make and run dl-test): <snip> plugin constructor func Hello from plugin [42]! Result = 43 plugin destructor func <<< called through dlclose() dlclose() done. </snip> Using uclibc, the destructor is called only when the application exits, and /not/ by dlclose(). |
||||||||
| Attached Files |
|
||||||||
|
|
|||||||||
| Copyright © 2000 - 2006 Mantis Group |