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