I got a failed assertion from clicking the upload
button of the upload widget from within an Ext::Dialog
running in its own thread.
The failed assertion was about a boost::shared_ptr
not being initialized before use (you can get more
details from the report below).
What could cause that?
The sad part is that I'm having a lot of trouble
reproducing the bug; it only happens when
I least expect it.
See the report below as an observation though.
I need to make sure the failed assertion did not
come from some underlying problem of my own
mistake; especially if no one else has had
the similar problem. I'll also test with WDialog
as a possible workaround and compile the
latest boost.
Note: I'm using yesterday's git and boost 1.36.0.
Regards.
// STARTBLOCK: VALGRIND REPORT
475 HTTP/1.1" 200 0
127.0.0.1 - - [2009-Jul-28 08:47:22.519771] "POST
/?wtd=cUehw4FAUSodTyOO&rand=82398 HTTP/1.1" 200 73
127.0.0.1 - - [2009-Jul-28 08:47:22.692106] "POST
/?wtd=cUehw4FAUSodTyOO&resource=o407&rand=1990515855 HTTP/1.1" 200 337
openinventory.wt: /usr/include/boost/shared_ptr.hpp:419: T*
boost::shared_ptr<T>::operator->() const [with T = http::server::Reply]:
Assertion `px != 0' failed.
==10940==
==10940== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- y
==10940== starting debugger with cmd: /usr/bin/gdb -nw /proc/12514/fd/1024 12514
GNU gdb (GDB; openSUSE 11.1) 6.8.50.20081120-cvs
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>...
Attaching to program: /proc/12514/fd/1024, process 12514
0x00000000066b9645 in ?? ()
(gdb) l
186
187 WApplication* createApplication(const WEnvironment& env)
188 {
189 OpenInventoryApplication* app = new OpenInventoryApplication(env);
190 return app;
191 }
192
193 int main(int argc, char **argv)
194 {
195 DbConnection::initialize();
(gdb) bt
#0 0x00000000066b9645 in ?? ()
#1 0x00000000066bac33 in ?? ()
#2 0x00000000069da860 in ?? ()
#3 0x00000000067a6737 in ?? ()
#4 0x000000000d5f8cc0 in ?? ()
#5 0x00000000000001a3 in ?? ()
#6 0x000000000d5f8db0 in ?? ()
#7 0x00000000066ead36 in ?? ()
#8 0x0000003000000018 in ?? ()
#9 0x000000000d5f8dc0 in ?? ()
#10 0x000000000d5f8ce0 in ?? ()
#11 0x00000000066d4758 in ?? ()
#12 0x0000003000000030 in ?? ()
#13 0x000000000d5f8dd8 in ?? ()
#14 0x000000000faafd08 in ?? ()
#15 0x000000000d5f8ce0 in ?? ()
#16 0x000000000faafd8a in ?? ()
#17 0x0000000000000064 in ?? ()
#18 0x00000007ff0005ed in ?? ()
---Type <return> to continue, or q <return> to quit---
#19 0x00000000067a6737 in ?? ()
#20 0x00000000051a3158 in ?? ()
#21 0x00000000000001a3 in ?? ()
#22 0x0000000000000020 in ?? ()
#23 0x0000000000000000 in ?? ()
(gdb) quit
The program is running. Quit anyway (and detach it)? (y or n) y
Detaching from program: /proc/12514/fd/1024, process 12514
==10940==
==10940== Debugger has detached. Valgrind regains control. We continue.
==10940==
==10940== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 5 from 1)
==10940== malloc/free: in use at exit: 1,058,012 bytes in 11,151 blocks.
==10940== malloc/free: 77,151 allocs, 66,000 frees, 17,833,825 bytes allocated.
==10940== For counts of detected errors, rerun with: -v
==10940== searching for pointers to 11,151 not-freed blocks.
==10940== checked 77,011,592 bytes.
==10940==
==10940== 8 bytes in 1 blocks are definitely lost in loss record 5 of 495
==10940== at 0x4C256AE: malloc (in
/usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==10940== by 0x69ED8CC: boost::detail::get_once_per_thread_epoch() (in
/usr/lib64/libboost_thread.so.1.36.0)
==10940== by 0x5660839: void boost::call_once<void (*)()>(boost::once_flag&,
void (*)()) (once.hpp:50)
==10940== by 0x69E8E16:
boost::detail::set_current_thread_data(boost::detail::thread_data_base*) (in
/usr/lib64/libboost_thread.so.1.36.0)
==10940== by 0x69EA8B0: thread_proxy (in
/usr/lib64/libboost_thread.so.1.36.0)
==10940== by 0x87BD06F: start_thread (in /lib64/libpthread-2.9.so)
==10940== by 0x675A10C: clone (in /lib64/libc-2.9.so)
==10940==
==10940==
==10940== 288 bytes in 1 blocks are definitely lost in loss record 287 of 495
==10940== at 0x4C23484: calloc (in
/usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==10940== by 0x4010B0E: _dl_allocate_tls (in /lib64/ld-2.9.so)
==10940== by 0x87BC74A: pthread_create@@GLIBC_2.2.5 (in
/lib64/libpthread-2.9.so)
==10940== by 0x69EAA36: boost::thread::start_thread() (in
/usr/lib64/libboost_thread.so.1.36.0)
==10940== by 0x519FD34: boost::thread::thread<boost::_bi::bind_t<void,
boost::_mfi::mf0<void, http::server::Server>,
boost::_bi::list1<boost::_bi::value<http::server::Server*> > >
>(boost::_bi::bind_t<void, boost::_mfi::mf0<void, http::server::Server>,
boost::_bi::list1<boost::_bi::value<http::server::Server*> > >,
boost::disable_if<boost::is_convertible<boost::_bi::bind_t<void,
boost::_mfi::mf0<void, http::server::Server>,
boost::_bi::list1<boost::_bi::value<http::server::Server*> > >&,
boost::detail::thread_move_t<boost::_bi::bind_t<void, boost::_mfi::mf0<void,
http::server::Server>,
boost::_bi::list1<boost::_bi::value<http::server::Server*> > > > >,
boost::thread::dummy*>::type) (thread.hpp:188)
==10940== by 0x519E853: Wt::WServer::start() (WServer.C:168)
==10940== by 0x519F58D: Wt::WRun(int, char**, Wt::WApplication*
(*)(Wt::WEnvironment const&)) (WServer.C:301)
==10940== by 0x4B2EE6: main (OpenInventoryApplication.cpp:196)
==10940==
==10940==
==10940== 2,592 bytes in 9 blocks are possibly lost in loss record 445 of 495
==10940== at 0x4C23484: calloc (in
/usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==10940== by 0x4010B0E: _dl_allocate_tls (in /lib64/ld-2.9.so)
==10940== by 0x87BC74A: pthread_create@@GLIBC_2.2.5 (in
/lib64/libpthread-2.9.so)
==10940== by 0x69EAA36: boost::thread::start_thread() (in
/usr/lib64/libboost_thread.so.1.36.0)
==10940== by 0x519FD34: boost::thread::thread<boost::_bi::bind_t<void,
boost::_mfi::mf0<void, http::server::Server>,
boost::_bi::list1<boost::_bi::value<http::server::Server*> > >
>(boost::_bi::bind_t<void, boost::_mfi::mf0<void, http::server::Server>,
boost::_bi::list1<boost::_bi::value<http::server::Server*> > >,
boost::disable_if<boost::is_convertible<boost::_bi::bind_t<void,
boost::_mfi::mf0<void, http::server::Server>,
boost::_bi::list1<boost::_bi::value<http::server::Server*> > >&,
boost::detail::thread_move_t<boost::_bi::bind_t<void, boost::_mfi::mf0<void,
http::server::Server>,
boost::_bi::list1<boost::_bi::value<http::server::Server*> > > > >,
boost::thread::dummy*>::type) (thread.hpp:188)
==10940== by 0x519E853: Wt::WServer::start() (WServer.C:168)
==10940== by 0x519F58D: Wt::WRun(int, char**, Wt::WApplication*
(*)(Wt::WEnvironment const&)) (WServer.C:301)
==10940== by 0x4B2EE6: main (OpenInventoryApplication.cpp:196)
==10940==
==10940==
==10940== 177,066 bytes in 1,354 blocks are possibly lost in loss record 495 of
495
==10940== at 0x4C2506C: operator new(unsigned long) (in
/usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==10940== by 0x5FB17D0: std::string::_Rep::_S_create(unsigned long, unsigned
long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.10)
==10940== by 0x5FB21A4: (within /usr/lib64/libstdc++.so.6.0.10)
==10940== by 0x5FB22E2: std::string::string(char const*,
std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.10)
==10940== by 0x73310DF: (within
/usr/lib64/libboost_program_options.so.1.36.0)
==10940== by 0x7338AF5: (within
/usr/lib64/libboost_program_options.so.1.36.0)
==10940== by 0x7318742: (within
/usr/lib64/libboost_program_options.so.1.36.0)
==10940== by 0x7FF0002DF: ???
==10940== by 0x400D8D7: (within /lib64/ld-2.9.so)
==10940== by 0x400DA06: (within /lib64/ld-2.9.so)
==10940== by 0x4000B39: (within /lib64/ld-2.9.so)
==10940== by 0x9: ???
==10940==
==10940== LEAK SUMMARY:
==10940== definitely lost: 296 bytes in 2 blocks.
==10940== possibly lost: 179,658 bytes in 1,363 blocks.
==10940== still reachable: 878,058 bytes in 9,786 blocks.
==10940== suppressed: 0 bytes in 0 blocks.
==10940== Reachable blocks (those to which a pointer was found) are not shown.
==10940== To see them, rerun with: --leak-check=full --show-reachable=yes
./vgstart: line 14: 10940 Killed valgrind --leak-check=yes
--db-attach=yes ./openinventory.wt --docroot . --http-address 0.0.0.0
--http-port 999 --config ./wt_config.xml --no-compression
// ENDBLOCK
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
witty-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/witty-interest