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

Reply via email to