Thanks for the response Matthew.

It does sound a like that kind of error but we only have one version of 
boost on the toolchain we are using.
It could have possibly been using the build machines boost but we 
investigated that and doesn't appear to be the case.

We did look into this further though and found some more information;
We used the Wt homepage example app, but massively cut down so it's 
pretty much just a WServer.
When a web browser connects to the wt app (using wthttpd connector btw) 
it hangs and receives no data from Wt, although Wt does spit out some 
logging with the browser type on stdout.

After running gdb it looks like a thread is hanging after a call from 
WServer. In once.hpp line 78 (which is a pthread_cond_broadcast).
The trace is at the end of this post.

To recap if we build boost with gcc 4.3.4 it works, with 4.4.4 it 
doesn't work.
Because of this a lot of the evidence points to a bug in either boost or 
the compiler.
We are using boost 1.47.1 at the moment, but have tryed 1.42 & 1.46.
We have also tryed gcc 4.4.6 and glibc 2.10.2, 2.12.1 and 2.14..
We have tryed Wt 3.1.7a, 3.1.9 and 3.1.10
The only version that makes any difference is the compiler.

We can't use gcc 4.3.4 (even though it works) because 4.4.4 is the 
earliest version of the compiler that will build correctly for the PowerPC.
NOTE: These errors are on an i686 target, not powerpc, but we need to 
also be able to build on powerpc.

After using the gcc options "-v -Q" I got more info about the compiler 
flags being used by default, as there are some differences between the 
compiler versions.
After a bit of playing around I narrowed it down to one option:

I can get it working with gcc 4.4.4 if I add -fno-inline to CFLAGS (when 
building boost).
After this it seems to behave as if i compiled it with gcc 4.3.4 and the 
browser connects and works fine.

Heres the problem:

It doesn't seem to us like this is really the issue here.
It seems more like this has just moved the problem around, and that the 
problem was probably there with the old compiler also.
Note that with either version, once the web browser connects, the Wt app 
can no longer be Ctrl-C, it just says stopping sessions and never does, 
needs to be Ctrl-Z and killed.
Looks like it gets stuck in a boost thread join or something similar.

So I guess the question is now, has anyone ever seen a problem with 
Ctrl-C a Wt app, probably using WServer in particular.
Also, Does anyone know of any issues with the way Wt uses boost_thread 
that might not be 100% "correct"
I know threading can be disabled from the Wt build, but it will put a 
lot of limitations on what we do if we do that.

I do realise the problem could be at our end but I'd just like to check 
this as we are kinda desperate now and have checked so many things in 
detail.

Thanks and kind regards,
Tom

PS: Here is the trace of the hang upon a browser connect.
To recap versions are:  Wt 3.1.10,  boost 1.47.0,  gcc 4.4.4

Thread 2 (Thread 0xb69d0b70 (LWP 2857)):
#0  0xb77be424 in __kernel_vsyscall ()
#1  0xb6a02ad9 in __lll_lock_wait () from /lib/libpthread.so.0
#2  0xb6a00645 in pthread_cond_broadcast@@GLIBC_2.3.2 () from 
/lib/libpthread.so.0
#3  0xb6c2c126 in pthread_cond_broadcast@@GLIBC_2.3.2 () from /lib/libc.so.6
#4  0xb7632ca6 in boost::call_once<void (*)()> (flag=@0xb779fd10,
     f=0xb7633310 
<boost::spirit::classic::impl::object_with_id_base<boost::spirit::classic::impl::grammar_tag,
 
unsigned

int>::mutex_init()>)
     at 
/home/distros/v3.01/staging/i686/usr/include/boost/thread/pthread/once.hpp:78
#5  0xb76340ef in 
boost::spirit::classic::impl::object_with_id_base<boost::spirit::classic::impl::grammar_tag,
 
unsigned

int>::acquire_object_id
     (this=0xb69cf6d8) at

/home/distros/v3.01/staging/i686/usr/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:140
#6  0xb7637acb in Wt::WebRequest::parsePreferredAcceptValue 
(this=0x807be48, str=@0xb69cf784)
     at 
/home/distros/v3.01/staging/i686/usr/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:78
#7  0xb763863e in Wt::WebRequest::parseLocale (this=0x807be48) at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-

3.1.10/src/web/WebRequest.C:229
#8  0xb7491ac3 in Wt::WEnvironment::init (this=0x807c5ac, 
request=@0x807be48)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/Wt/WEnvironment.C:145
#9  0xb763b8cc in Wt::WebSession::init (this=0x807c038, request=@0x807be48)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/web/WebSession.C:273
#10 0xb763f156 in Wt::WebSession::handleRequest (this=0x807c038, 
handler=@0xb69cfd04)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/web/WebSession.C:1047
#11 0xb766025f in Wt::WebController::handleAsyncRequest (this=0x8073698, 
request=0x807be48)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/web/WebController.C:644
#12 0xb76612c4 in Wt::WebController::handleRequest (this=0x8073698, 
request=0x807be48)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/web/WebController.C:515
#13 0xb71a9a8a in Wt::WServer::handleRequest (this=0xbf971be8, 
request=0x807be48)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/http/WServer.C:372
#14 0xb71af55c in http::server::WtReply::consumeRequestBody 
(this=0x807bc70, begin=0x8075417 "", end=0x8075417 "",
     state=http::server::Request::Complete) at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/http/WtReply.C:182
#15 0xb71b0b8c in http::server::WtReply::consumeData (this=0xfffffe00, 
begin=0xb6cae240 "\002", end=0x80 <Address 0x80 out of bounds>,
     state=http::server::Request::Complete) at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/http/WtReply.C:81
#16 0xb718c33c in http::server::RequestParser::parseBody 
(this=0x80772f8, req=@0x80772a0, reply={px = 0x807bc70, pn = {pi_ =

0x807bc58}},
     begin=@0x807729c, end=0x8075417 "") at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/http/RequestParser.C:135
#17 0xb71745e2 in http::server::Connection::handleReadBody (this=0x8075260)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/http/Connection.C:191
#18 0xb7176f10 in http::server::Connection::handleReadRequest0 
(this=0x8075260)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/http/Connection.C:127
#19 0xb71770fa in http::server::Connection::handleReadRequest 
(this=0x8075260, e=@0xb69d01a8, bytes_transferred=383)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/http/Connection.C:162
#20 0xb71a8953 in 
boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, 
boost::_bi::bind_t<void,

boost::_mfi::mf2<void, htt                               
p::server::Connection, boost::system::error_code const&, unsigned int>,

boost::_bi::list3<boost::_bi::value<boost::shared_ptr<http::server::Connec      
                         
tion> >, boost::arg<1> (*)(),

boost::arg<2> (*)()> > >::do_complete (owner=0x8073038, base=0x8078728)
     at 
/home/distros/v3.01/staging/i686/usr/include/boost/bind/mem_fn_template.hpp:271
#21 0xb75e953b in boost::asio::detail::task_io_service::run 
(this=0x8073038, ec=@0xb69d02e8)
     at 
/home/distros/v3.01/staging/i686/usr/include/boost/asio/detail/task_io_service_operation.hpp:36
#22 0xb718e4fe in http::server::Server::run (this=0x8075140) at

/home/distros/v3.01/staging/i686/usr/include/boost/asio/impl/io_service.ipp:57
#23 0xb71ac1db in Wt::WServerImpl::runThread (this=0x8072638, 
server=0xbf971be8)
     at 
/home/distros/v3.01/rpmbuild/BUILD/i686/wt-3.1.10/src/http/WServer.C:123
#24 0xb71abfe2 in boost::detail::thread_data<boost::_bi::bind_t<void, 
boost::_mfi::mf1<void, Wt::WServerImpl, Wt::WServer*>,

boost::_bi::list2<boo                               
st::_bi::value<Wt::WServerImpl*>, boost::_bi::value<Wt::WServer*> > > 
 >::run

(this=0x8072d58)
     at 
/home/distros/v3.01/staging/i686/usr/include/boost/bind/mem_fn_template.hpp:165
#25 0xb6ca2616 in thread_proxy () from /usr/lib/libboost_thread.so.1.47.0
#26 0xb69fb8ce in start_thread () from /lib/libpthread.so.0
#27 0xb6c1ec9e in clone () from /lib/libc.so.6

____________________________

Miranda Technologies Limited
Registered in England and Wales CN 02017053
Registered Office: James House, Mere Park, Dedmere Road, Marlow, Bucks, SL7 1FJ

------------------------------------------------------------------------------
FREE DOWNLOAD - uberSVN with Social Coding for Subversion.
Subversion made easy with a complete admin console. Easy 
to use, easy to manage, easy to install, easy to extend. 
Get a Free download of the new open ALM Subversion platform now.
http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
witty-interest mailing list
witty-interest@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/witty-interest

Reply via email to