Hi Andrew:

I just discovered another issue which may be release critical.

For the -DENABLE_DYNDRIVERS=OFF case (with everything else default so
this issue occurs when qt_example is built against the system Qt4
libraries), the usual test_interactive target generated a glibc double
free error message for examples/c++/qt_example.

When I investigated further with valgrind, here were the results.

==9797== Memcheck, a memory error detector
==9797== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==9797== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==9797== Command: examples/c++/qt_example
==9797== 
==9797== Invalid free() / delete / delete[] / realloc()
==9797==    at 0x4C279DC: operator delete(void*) (vg_replace_malloc.c:457)
==9797==    by 0x6F28E64: __cxa_finalize (cxa_finalize.c:56)
==9797==    by 0x644B352: ??? (in 
/home/software/plplot/HEAD/build_dir/src/libplplot.so.12.0.1)
==9797==    by 0x400E4CB: _dl_fini (dl-fini.c:244)
==9797==    by 0x6F28AE1: __run_exit_handlers (exit.c:78)
==9797==    by 0x6F28B34: exit (exit.c:100)
==9797==    by 0x6F10EB3: (below main) (libc-start.c:276)
==9797==  Address 0x10ad0500 is 0 bytes inside a block of size 40 free'd
==9797==    at 0x4C279DC: operator delete(void*) (vg_replace_malloc.c:457)
==9797==    by 0x6F28E64: __cxa_finalize (cxa_finalize.c:56)
==9797==    by 0x621D362: ??? (in 
/home/software/plplot/HEAD/build_dir/bindings/qt_gui/libplplotqt.so.1.0.0)
==9797==    by 0x400E4CB: _dl_fini (dl-fini.c:244)
==9797==    by 0x6F28AE1: __run_exit_handlers (exit.c:78)
==9797==    by 0x6F28B34: exit (exit.c:100)
==9797==    by 0x6F10EB3: (below main) (libc-start.c:276)
==9797== 
==9797== Invalid read of size 1
==9797==    at 0x5ED0FCD: QObject::~QObject() (in 
/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.2)
==9797==    by 0x6F28E64: __cxa_finalize (cxa_finalize.c:56)
==9797==    by 0x644B352: ??? (in 
/home/software/plplot/HEAD/build_dir/src/libplplot.so.12.0.1)
==9797==    by 0x400E4CB: _dl_fini (dl-fini.c:244)
==9797==    by 0x6F28AE1: __run_exit_handlers (exit.c:78)
==9797==    by 0x6F28B34: exit (exit.c:100)
==9797==    by 0x6F10EB3: (below main) (libc-start.c:276)
==9797==  Address 0x20 is not stack'd, malloc'd or (recently) free'd
==9797== 
==9797== 
==9797== Process terminating with default action of signal 11 (SIGSEGV)
==9797==  Access not within mapped region at address 0x20
==9797==    at 0x5ED0FCD: QObject::~QObject() (in 
/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.2)
==9797==    by 0x6F28E64: __cxa_finalize (cxa_finalize.c:56)
==9797==    by 0x644B352: ??? (in 
/home/software/plplot/HEAD/build_dir/src/libplplot.so.12.0.1)
==9797==    by 0x400E4CB: _dl_fini (dl-fini.c:244)
==9797==    by 0x6F28AE1: __run_exit_handlers (exit.c:78)
==9797==    by 0x6F28B34: exit (exit.c:100)
==9797==    by 0x6F10EB3: (below main) (libc-start.c:276)
==9797==  If you believe this happened as a result of a stack
==9797==  overflow in your program's main thread (unlikely but
==9797==  possible), you can try to increase the size of the
==9797==  main thread stack using the --main-stacksize= flag.
==9797==  The main thread stack size used in this run was 8388608.
==9797== 
==9797== HEAP SUMMARY:
==9797==     in use at exit: 360,355 bytes in 3,145 blocks
==9797==   total heap usage: 21,464 allocs, 18,320 frees, 5,936,081 bytes 
allocated
==9797== 
==9797== LEAK SUMMARY:
==9797==    definitely lost: 1,776 bytes in 13 blocks
==9797==    indirectly lost: 3,466 bytes in 84 blocks
==9797==      possibly lost: 3,032 bytes in 12 blocks
==9797==    still reachable: 352,081 bytes in 3,036 blocks
==9797==         suppressed: 0 bytes in 0 blocks
==9797== Rerun with --leak-check=full to see details of leaked memory
==9797== 
==9797== For counts of detected and suppressed errors, rerun with: -v
==9797== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 12 from 8)
Segmentation fault

In contrast I get relatively good valgrind results when
-DENABLE_DYNDRIVERS=ON (the default case)

==12544== Memcheck, a memory error detector
==12544== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==12544== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==12544== Command: examples/c++/qt_example
==12544== 
==12544== 
==12544== HEAP SUMMARY:
==12544==     in use at exit: 268,716 bytes in 2,536 blocks
==12544==   total heap usage: 20,738 allocs, 18,202 frees, 5,877,042 bytes 
allocated
==12544== 
==12544== LEAK SUMMARY:
==12544==    definitely lost: 1,600 bytes in 11 blocks
==12544==    indirectly lost: 3,466 bytes in 84 blocks
==12544==      possibly lost: 2,448 bytes in 7 blocks
==12544==    still reachable: 261,202 bytes in 2,434 blocks
==12544==         suppressed: 0 bytes in 0 blocks
==12544== Rerun with --leak-check=full to see details of leaked memory
==12544== 
==12544== For counts of detected and suppressed errors, rerun with: -v
==12544== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 10 from 6)

In both cases I simply exited the GUI immediately using the
menu item which is equivalent to ALT + F4.

Would you be willing to take a look at this?

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
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to