On 2009-03-14 19:11-0000 Andrew Ross wrote:

> On Fri, Mar 13, 2009 at 04:45:45PM -0700, Alan Irwin wrote:
>> Hi Andrew:
>>
>> I frankly don't understand the differing results that we had, and that
>> bothers me.  In particular I don't understand why you had memory management
>> problems for the versions prior to your recent commit while I did not (either
>> reported as segfaults or valgrind memory management issues) with
>> Debian Lenny. To further document what I have installed on my Debian Lenny
>> 64-bit hardware (i.e., amd64) system the cmake output results relevant to qt
>> are
>>
>> -- Found Qt-Version 4.4.3
>>
>> Do you get the same Qt version number there?
>
> I don't because I still have the default cmake 2.6.0 installed on the
> Debian system. ldd shows that qt.so is linked against the Qt4 libraries
> and the installed version is 4.4.3.

OK, but execution of the cmake application (regardless of whether for CMake
version 2.6.0 or 2.6.3) should output the Qt version number as above.  Also,
note that for a while now I have been running cmake-2.6.0 (my own built
version rather than Debian's) to make sure my testing is done with a
virtually identical build system to yours (and also to keep testing against
our minimum version of CMake to insure nothing creeps in that will not work
on that version).  So it appears to me that between us we had a virtually
identical build system, same library set (at least for your Debian Lenny
test), and same 64-bit hardware, but with the puzzling result that we got
quite different qt results until your fix.

Here is another speculation about what might have been causing the memory
management problems for you.  Such issues can be caused by inconsistency
in your Qt-base library installation.  For example, until I fixed the
rpath problems (see below) I was getting segfaults with my attempt to
use qt devices in the install tree.  The CMake documentation implies qmake
provides the compilation and linking information for Qt4.  Do you have a
consistent version of that?

Here are the (consistent) results I get for that question for my system Qt4
libraries:

softw...@raven> /usr/sbin/update-alternatives --list qmake
/usr/bin/qmake-qt4

> I suspect the issue is due to the fact that we are doing some
> non-standard things with Qt. This I'm not surprised about. More worrying
> is this non-reproducability, even on the same Linux distribution. I think
> this needs close testing on as many versions and platforms as we have
> access to, to reassure ourselves that it really is robust.

I completely agree with your conclusion.  Furthermore, we should look at any
unexplained discrepancy (like the varying glyph sizes on different Linux
platforms) with a microscope. I hope everyone here will participate in these
much-needed tests for all accessible Linux, Mac OS X, and Windows platforms.
The last two platforms probably require downloading your own version of Qt4
from http://www.qtsoftware.com/downloads/downloads#lgpl, and it turns out
that download of that version for Linux also helps.

I just tried that for the Linux-64-bit SDK version.  Running the qt installer
went well and gave me a private version of Qt-4.5.  I then set up
the PLplot build this way to get access to that private version:

# Everything related to latest Qt from Trolltech:
PATH='/home/software/qtsdk-2009.01/qt/bin:'$PATH
export CMAKE_LIBRARY_PATH=/home/software/qtsdk-2009.01/qt/lib
export CMAKE_INCLUDE_PATH=\
/home/software/qtsdk-2009.01/qt/include":$CMAKE_INCLUDE_PATH"

(The last two exports may be overkill since the Qt4 documentation for CMake
implies putting qmake on your path is all that is necessary.)

As expected, the cmake run (where I enabled svgqt, see below)
output the following Qt-related information verifying the Qt version:

-- Found Qt-Version 4.5.0

After the PLplot build, I also verified with ldd -r that drivers/qt.so in
the build tree pointed to the correct (private) versions of the libraries.

Before revision 9738 where I fixed the issue, there was a build-system
screwup with rpath for the installed version with the net result that ldd -r
showed that $prefix/lib/version was pointing to the wrong (system version)
of the Qt libraries.so which produced segfaults when I attempted to use any
qt-related device in the install tree.  (See comments above about how easy
it is to produce segfaults for inconsistent qt library versions.)

After revision 9738, all install-tree tests went fine with Qt-4.5.0 (except
for the 50 per cent sized glyphs for -dev qtwidget and the 80 per cent sized
glyphs for all other qt-related devices).  I didn't see any offset issues,
but there might be some subtle shifts I will see once the glyph size
problem is fixed.

Note, the tested devices included -dev svgqt which I have re-enabled again
(revision 9737) by default for the reasons below. Under both konqueror and
firefox (the versions of which I have given before) those svgqt results look
identical to the pngqt results, i.e., the text offset issues that you see
with Qt-4.4.3 and SVG output seem to be gone with Qt-4.5.0.  That's a most
gratifying improvement in Qt4's SVG treatment.  Also, I looked more closely
at the validation errors I was bitching about, and the only problem appears
to be the w3c validator only deals with SVG-1.0 and 1.1, and Qt actually
produces SVG-1.2 (a w3c draft standard which documents the attribute that
the validator was complaining about).  My conclusion is that the Qt4 SVG-1.2
file results will validate once the w3c validator gets up to speed with
SVG-1.2.

To summarize all of these various but related topics:

* Qt has a rather complex set of libraries so that memory management issues
can be triggered by something as seemingly innocuous as an inconsistent
qmake version or bad rpath.

* The preliminary results for the qt devices are looking good (aside from
the glyph size issues I am encountering regardless of Qt library version).

* The build of PLplot with the latest Qt-4.5 is straightforward and worth
the effort.

* For example, Glyph offset issues for Qt-4.4.3 seem to have been addressed
for Qt-4.5.0 (at least for SVG if you use a reliable SVG viewer like firefox
and probably the other devices as well).

* The SVG validation errors I encountered before for svgqt have been
completely explained and are basically not an issue.

* We need testing help (using Qt-4.5.0) on all platforms to figure out the
obvious remaining issue (inconsistent glyph sizes) and also to verify that
all the memory management issues are now gone.

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); PLplot scientific plotting software
package (plplot.org); 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
__________________________

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to