Hi Andrew: I have now (commit fa0c879) solved this release-critical regression.
The crux of the problem is redundant linking of qt_example to both plplot (which contained all of the code in plplotqt for this ENABLE_DYNDRIVERS=NO case) and plplotqt. examples/c++/qt_example had no severe memory management issues if I manipulated visibility so that I used either the plplotqt symbols from just plplot or just plplotqt. However, if both sets of symbols are made visible (the change that formally caused this regression), it caused severe memory management issues when the libraries were closed at plend. The obvious fix for this issue has been applied which is to drop the redundant linking of qt_example to libplplotqt for the ENABLE_DYNDRIVERS=NO case. There are obvious broader implications here now that we have a clear case of plend memory management issues caused by redundant linking to two sets of the identical code located in two different libraries. I frankly never expected this to be an issue since I thought the linker would choose one set or the other with no other consequences. But from this experience this is obviously not the case (probably due to all the behind-the-scenes shenanigans that go on when libraries are closed). Anyhow, since I have not been aware of this issue for all the years I have been trying to maintain correct PLplot linking, I am virtually positive there are similar instances of this same problem for other device drivers. Note, for example, that for the ENABLE_DYNDRIVERS=NO case there is necessarily always two copies of the device driver binding code (e.g., like the libplplotqt binding code) to break circular linking issues. So my current plan is to look very carefully for such issues and fix them (likely most of those fixes will occur post-release if there is not a clear regression from 5.10.0 results) in the hope this refinement of our linking model will ultimately resolve a substantial number of the plend memory management issues we have been encountering. Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); the Time Ephemerides project (timeephem.sf.net); PLplot scientific plotting software package (plplot.sf.net); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ ------------------------------------------------------------------------------ Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Plplot-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/plplot-devel
