To Maurice and Arjen:
I need some help tracking down the cause of a segfault with
the menubutton command in bindings/tk/plwidget.tcl.
To follow what I have done you should be using the latest trunk
version (revision 12650 or later) which corrects a few issues with the
test for TEA compliance below. It has obviously been a long time
since anyone tested the Tk bindings for PLplot this way, but it would
be nice to get this test working again because TEA is a pretty
important Tcl/Tk standard for extensions such as the Tk bindings
for PLplot.
The directions in examples/tk/README.tkdemos for testing TEA
compliance from the wish environment for PLplot say use (after
everything is built in the build tree that is required)
wish
lappend auto_path $prefix/share/plplot$VERSION | ../../bindings/tk
package require Pltk
source tkdemos.tcl
That final source command or equivalently
% plstdwin .
% plxframe .plw
segfaults with the Debian versions of Tcl/Tk8.5 and
itcl... version 3. With a lot of puts commands, I finally discovered
that segfault occurred as a result of
menubutton $pmbut -text "Plot" -menu $pmenu($w) -relief raised
in the plw::create_pmenu proc defined in bindings/tk/plwidget.tcl
Here are the first few valgrind error messages associated with
this issue:
% lappend auto_path ../../bindings/tk
/usr/share/tcltk/tcl8.5 /usr/lib /usr/local/lib/tcltk
/usr/local/share/tcltk /usr/lib/tcltk /usr/share/tcltk
/usr/share/tcltk/tk8.5 /usr/share/tcltk/tk8.5/ttk ../../bindings/tk
% package require Pltk
5.9.10
% plstdwin .
% plxframe .plw
==10307== Use of uninitialised value of size 8
==10307== at 0x54A2124: pthread_mutex_lock (pthread_mutex_lock.c:50)
==10307== by 0x5701D86: XrmQGetResource (in
/usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==10307== by 0x56DE951: XGetDefault (in
/usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
[...]
==10307== Invalid read of size 4
==10307== at 0x54A2124: pthread_mutex_lock (pthread_mutex_lock.c:50)
==10307== by 0x5701D86: XrmQGetResource (in
/usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
I suspect the common location of pthread_mutex_lock for these first
two valgrind issues indicates some sort
of thread difficulty with the above menubutton command.
The above menubuttom command is executed as part of the create_pmenu
procedure that is set up with
pack append $w.ftop \
[plw::create_pmenu $w $w.ftop.pmenu] \
{left fill padx 12}
So the above $pmbut variable corresponds to $w.ftop.pmenu
in the calling environment.
I also tried replacing the above menubutton syntax with
menubutton $pmbut -text "Plot" -menu $pmbut.m -relief raised
That syntax corresponds to how we use menubutton elsewhere in
our scripts. However, that version of the command also
caused an immediate segfault.
Therefore, I suspect something is wrong with either $w or
$w.ftop.pmenu in the above
[plw::create_pmenu $w $w.ftop.pmenu]
but I don't know what because I have pretty much come to the end of my
limited Tcl/Tk expertise. Therefore, would one of you be willing to take
over now and debug this segfault yourself? It would be good to be
able to demonstrate compliance with the TEA standard for our PLplot Tk
bindings again.
That appeal for help is mostly directed at Maurice because he has
access to Linux while there is a
barrier to entry for Arjen's Cygwin platform. An important
question on that platform is whether the Unix or Windows logic in
bindings/tk/pkgIndex.tcl.in is being executed. If it is Windows, then
from the comments in that part of the logic, there is likely some
changes Arjen will have to make to get the above
package require Pltk
command executed under wish to provide the expected answer (5.9.10)
that you get on Linux. But once he has gotten that far on Cygwin, then
I suspect he will run into some sort of run-time trouble (as I do on
Linux) with the
source tkdemos.tcl
command which will boil down to some issue with the way the above
menubutton command is invoked.
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
__________________________
------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Plplot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/plplot-devel