Alan, Out of interest I tried installing tcl / tk 8.6 from Ubuntu and building with that using -DUSE_TCL_TK_STUBS=ON. I can confirm the bug exists in that case too. No need to use epa_build. I've not (yet) gone back to check on 8.5
I tried running the example through valgrind and with gdb, but there is nothing very helpful beyond what you've already identified. It is definitely a stubs related issue. Without -DUSE_TCL_TK_STUBS=ON I see no segfault. I also tried adding -fstack-protector-all to CFLAGS, but nothing showed up. This is something of a mystery, and I must admit I don't know enough about tcl / tk to speculate on that. Incidentally you are right about the first two entries in the valgrind log. This is a result of my recent changes to clean up the fifo creation code. I've fixed this particular bug anyway. Andrew On Thu, Dec 12, 2013 at 10:13:26PM -0800, Alan Irwin wrote: > I have tagged the subject line with [Post-release] because I think it > is too late for for any but the most obvious and simple changes in > this release cycle, but I hope some of the memory management issues > that I am discovering right now for the tk device driver will be > addressed right away in the next release cycle. > > I have discovered through the comprehensive tests of epa_build results > that I just implemented that examples/c/x01c -dev tk (and presumably > the rest of the C examples) segfault under a certain combination of > circumstances. > > (1) Must be using the version of Tcl/Tk(8.6) built by epa_build. > > (2) Must have -DUSE_TCL_TK_STUBS=ON > > I know I did tests for this exact combination of circumstances in the > very recent past (via the test_interactive target which definitely > runs examples/c/x01c -dev tk and a lot of other tests) without a > segfault. However, that is the nature of memory management issues; > some times you get segfaults and sometimes you don't. > > When I ran valgrind on examples/c/x01c -dev tk for the above > combination of circumstances it showed an invalid read followed by a > segfault occurred at line 712 of bindings/tcl/tclAPI.c; > > Tcl_SetVar( interp, "dir", TCL_DIR, TCL_GLOBAL_ONLY ); > > The TCL_DIR macro has not been clobbered according to the debug > > fprintf( stderr, "adding %s to auto_path\n", TCL_DIR ); > > that occurs (now) just before that statement, and everything else > about this statement is pretty simple and benign so I don't understand > at all what is causing this segfault. But it is a virtual certainty > it is caused by something being overwritten either in the heap or > stack. > > Since -DUSE_TCL_TK_STUBS=ON is a new innovation that is not as well > tested as our traditional Tcl, etc., results which did not > use the stubs Tcl/Tk libraries, I have decided to work around > this issue for the default case by adopting -DUSE_TCL_TK_STUBS=OFF for > that case. > > I then looked carefully at the -DUSE_TCL_TK_STUBS=OFF case with a > valgrind run on examples/c/x01c -dev tk. For this non-stubs case > there were no obvious issues like invalid reads, but there were a fair > number of fouled up memory allocations by the time the example was > done as you can see from the attached valgrind report. Some of those > (such as at least the first two) are definitely due to PLplot code and > should be addressed by us post release just in case one of those is > the culprit that indirectly causes the invalid read and segfault > issues for the stubs case. > > Of course, the issue might also be that PLplot can reliably use the > Tcl/Tk stubs libraries for Tcl/Tk version 8.5, but not 8.6 because of > our extensive use of of Tcl/Tk library API which has been deprecated > for many releases of Tcl/Tk and which therefore might not be reliably > maintained any more by the Tcl/Tk developers (say as of version 8.6). > > @Arjen: To avoid such Tcl/Tk potential internal bit-rot issues, I > would strongly encourage you (post-release) to establish some minimum > Tcl/Tk version we support (8.5?) and review all our Tcl/Tk code and > systematically replace Tcl/Tk API calls that were deprecated as of > that version with the recommended replacements. That's worth > doing in its own right and may have some impact on the memory > management issues I have discovered. > > I am bringing up these tk device driver memory management issues because > they are fresh in my mind, but I emphasize again they should only be > tackled post-release. > > 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 > __________________________ > ------------------------------------------------------------------------------ > Rapidly troubleshoot problems before they affect your business. Most IT > organizations don't have a clear picture of how application performance > affects their revenue. With AppDynamics, you get 100% visibility into your > Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! > http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk > _______________________________________________ > Plplot-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/plplot-devel > > --8323328-1055011482-1386915207 ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk _______________________________________________ Plplot-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/plplot-devel
