Very randomly and sporadically (I have seen it twice so far in my
couple weeks long of using this so far) I get a crash on line 71 in
file timeutil.c because the this pointer is null (thus t_ is pointing
to invalid memory 0x00000004).

This is on Windows using the built in server.

Here is the callstack:
>       Zombjas.wt.exe!Wt::Time::operator-(const Wt::Time & other={...})  Line 
> 71 + 0xa bytes   C++
        Zombjas.wt.exe!Wt::WebController::expireSessions()  Line 163 + 0x13 
bytes       C++
        Zombjas.wt.exe!Wt::WebController::handleRequest(Wt::WebRequest *
request=0x00ffd7d0, const Wt::EntryPoint * ep=0x00fea030)  Line
425     C++
        Zombjas.wt.exe!http::server::WtReply::consumeRequestBody(const char
* begin=0x00fe5e09, const char * end=0x00fe5e09, bool
endOfRequest=true)  Line 43     C++
        
Zombjas.wt.exe!http::server::RequestParser::parseBody(http::server::Request
& req={...}, boost::shared_ptr<http::server::Reply> reply={...}, const
char * & begin=0x00fe5e09, const char * end=0x00fe5e09)  Line 120 +
0x26 bytes      C++
        Zombjas.wt.exe!http::server::Connection::handleReadBody()  Line 131
+ 0x50 bytes    C++
        Zombjas.wt.exe!http::server::Connection::handleReadRequest0()  Line
96 + 0x8 bytes  C++
        Zombjas.wt.exe!http::server::Connection::handleReadRequest(const
boost::system::error_code & e={...}, unsigned int
bytes_transferred=609)  Line 121        C++
        
Zombjas.wt.exe!boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>::call<boost::shared_ptr<http::server::Connection>,boost::system::error_code
const ,unsigned int>(boost::shared_ptr<http::server::Connection> &
u={...}, const void * __formal=0x01d0fcbc, const
boost::system::error_code & b1={...}, unsigned int & b2=609)  Line 265
+ 0x27 bytes    C++
        
Zombjas.wt.exe!boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>::operator()<boost::shared_ptr<http::server::Connection>
>(boost::shared_ptr<http::server::Connection> & u={...}, const
boost::system::error_code & a1={...}, unsigned int a2=609)  Line
280     C++
        
Zombjas.wt.exe!boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2>
>::operator()<boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned int>,boost::_bi::list2<boost::system::error_code
&,unsigned int &> >(boost::_bi::type<void> __formal={...},
boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned int> & f={...},
boost::_bi::list2<boost::system::error_code &,unsigned int &> &
a={...}, boost::_bi::type<void> __formal={...})  Line 386       C++
        
Zombjas.wt.exe!boost::_bi::bind_t<void,boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>,boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2> >
>::operator()<boost::system::error_code,unsigned
int>(boost::system::error_code & a1={...}, unsigned int & a2=609)
Line 62 C++
        
Zombjas.wt.exe!boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>,boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned
int>::operator()()  Line 97     C++
        
Zombjas.wt.exe!boost::asio::asio_handler_invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>,boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned
int> 
>(boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>,boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned
int> function={...}, ...)  Line 63      C++
        
Zombjas.wt.exe!boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>,boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned
int>,boost::_bi::bind_t<void,boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>,boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2> > > >(const
boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>,boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned
int> & function={...},
boost::_bi::bind_t<void,boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>,boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2> > > * context=0x01d0fd24)  Line 39 +
0x1d bytes      C++
        
Zombjas.wt.exe!boost::asio::detail::win_iocp_socket_service<boost::asio::ip::tcp>::receive_operation<boost::asio::mutable_buffers_1,boost::_bi::bind_t<void,boost::_mfi::mf2<void,http::server::Connection,boost::system::error_code
const &,unsigned
int>,boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connection>
>,boost::arg<1>,boost::arg<2> > >
>::do_completion_impl(boost::asio::detail::win_iocp_io_service::operation
* op=0x01002b98, unsigned long last_error=0, unsigned int
bytes_transferred=609)  Line 1342 + 0x32 bytes  C++
        
Zombjas.wt.exe!boost::asio::detail::win_iocp_io_service::operation::do_completion(unsigned
long last_error=0, unsigned int bytes_transferred=609)  Line 77 + 0x16
bytes   C++
        Zombjas.wt.exe!boost::asio::detail::win_iocp_io_service::do_one(bool
block=true, boost::system::error_code & ec={...})  Line 512     C++
        
Zombjas.wt.exe!boost::asio::detail::win_iocp_io_service::run(boost::system::error_code
& ec={...})  Line 186 + 0xe bytes       C++
        Zombjas.wt.exe!boost::asio::io_service::run()  Line 58 + 0xf bytes      
C++
        Zombjas.wt.exe!http::server::Server::run()  Line 193    C++
        
Zombjas.wt.exe!boost::_mfi::mf0<void,http::server::Server>::operator()(http::server::Server
* p=0x00fed118)  Line 49 + 0xc bytes    C++
        Zombjas.wt.exe!boost::_bi::list1<boost::_bi::value<http::server::Server
*> 
>::operator()<boost::_mfi::mf0<void,http::server::Server>,boost::_bi::list0>(boost::_bi::type<void>
__formal={...}, boost::_mfi::mf0<void,http::server::Server> & f={...},
boost::_bi::list0 & a={...}, boost::_bi::type<void> __formal={...})
Line 247        C++
        
Zombjas.wt.exe!boost::_bi::bind_t<void,boost::_mfi::mf0<void,http::server::Server>,boost::_bi::list1<boost::_bi::value<http::server::Server
*> > >::operator()()  Line 21   C++
        
Zombjas.wt.exe!boost::detail::thread_data<boost::_bi::bind_t<void,boost::_mfi::mf0<void,http::server::Server>,boost::_bi::list1<boost::_bi::value<http::server::Server
*> > > >::run()  Line 57        C++
        Zombjas.wt.exe!boost::`anonymous
namespace'::thread_start_function(void * param=0x0017fa08)  Line 167 +
0xd bytes       C++
        msvcr80d.dll!_callthreadstartex()  Line 348 + 0xf bytes C
        msvcr80d.dll!_threadstartex(void * ptd=0x00fea830)  Line 331    C

In WebController::expireSessions, here are the local variables at that
point in time (it seems the expire_ var in session was never set?):
                diff    600000  int
-               session 0x010136b0 {mutex_={...} type_=Application favicon_=<Bad
Ptr> ...}       Wt::WebSession *
+               mutex_  {...}   boost::mutex
+               threadHandler_  {cleanup={...}
}       boost::thread_specific_ptr<Wt::WebSession::Handler>
                type_   Application     Wt::ApplicationType
+               favicon_        <Bad
Ptr>    std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
                state_  18614203        Wt::WebSession::State
+               sessionId_      <Bad
Ptr>    std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
+               controller_     0x01062a68 {conf_={...} stream_=0xcdcdcdcc
singleSessionId_="@" ...}      Wt::WebController *
+               renderer_       {session_={...} visibleOnly_=false 
twoPhaseThreshold_=0
...}    Wt::WebRenderer
                applicationName_        <Bad
Ptr>    std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
                bookmarkUrl_    <Bad
Ptr>    std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
+               baseUrl_        ""      
std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
+               absoluteBaseUrl_        <Bad
Ptr>    std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
                applicationUrl_ "€9" 
std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
                deploymentPath_ <Bad
Ptr>    std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
+               redirect_       ""     
std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
+               pollResponse_   0xcdcdcd00      Wt::WebResponse *
                updatesPending_ false   bool
                progressiveBoot_        false   bool
+               expire_ {t_=0x00000004 }        Wt::Time
+               recursiveEvent_ {...}   boost::condition_variable_any
+               embeddedEnv_    {session_=0x01013e10 doesAjax_=false
doesCookies_=false ...} Wt::WEnvironment
+               env_    0x00000000 {session_=??? doesAjax_=??? doesCookies_=???
...}    Wt::WEnvironment *
+               app_    0x00000004 {requestTooLarge_={...} session_=??? 
title_={...}
...}    Wt::WApplication *
                debug_  false   bool
                handlers_       [4294961119](...,...)   
std::vector<Wt::WebSession::Handler
*,std::allocator<Wt::WebSession::Handler *> >
                emitStack_      [0]()   std::vector<Wt::WObject 
*,std::allocator<Wt::WObject *> >
+               recursiveEventLoop_     0x00000000 {lock_={...} prevHandler_=???
session_=??? ...}       Wt::WebSession::Handler *
+               i       ("RU6xllBxGoqrckA5",0x010136b0 {mutex_={...} 
type_=Application
favicon_=<Bad Ptr>
...})   
std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,Wt::WebSession
*,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,Wt::WebSession *> >,0> >::iterator
+               this    0x0036e2c0 {conf_={...} stream_=0x0036e2b8 
singleSessionId_=""
...}    Wt::WebController * const
+               now     {t_=0x00ff7868 }        Wt::Time
                toKill  [0]()   std::vector<Wt::WebSession 
*,std::allocator<Wt::WebSession *> >
+               sessionsLock    {m=0x0036e328 is_locked=true
}       boost::unique_lock<boost::recursive_mutex>


Any thoughts?  Pretty hard for me to reproduce, thus debug...

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
witty-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/witty-interest

Reply via email to