Project

General

Profile

Actions

Bug #2811

closed

Segfault in http::server::WtReply::send

Added by Emeric Poupon over 10 years ago. Updated over 10 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Target version:
Start date:
03/13/2014
Due date:
% Done:

0%

Estimated time:

Description

(regression, upgrading from 3.3.1 to 3.3.2-rc2)

A resource is being served (audio file transcoded using a custom resource)

If I press F5 in my browser during the transfer, I get from time to time :

...

192.168.1.16 - - [2014-Mar-13 12:51:31.549560] "GET /resources/jPlayer/skin/jplayer.blue.monday.css HTTP/1.1" 304 0

Wrote 131072 bytes,

Continuation set!

[2014-Mar-13 12:51:31.558729] 25269 [/ rEPzRN4nPueiY0IJ] [error] "wthttp: WtReply::send() called while still busy sending..."

AvConvTranscoder::~AvConvTranscoder called!

Killing child!

Killing child DONE

[2014-Mar-13 12:51:31.558789] 25269 - [error] "Http::ResponseContinuation: WriteError"

Program received signal SIGSEGV, Segmentation fault.

[Switching to Thread 0x7fffeb1e1700 (LWP 25276)]

http::server::WtReply::send(boost::function<void (Wt::WebWriteEvent)> const&, bool) (this=this@entry=0x0, callBack=..., responseComplete=true)

at /storage/emeric/MesProgs/wt/wt-3.3.2-rc2/src/http/WtReply.C:429

429 if (sending_ != 0) {

(gdb) bt

#0 http::server::WtReply::send(boost::function<void (Wt::WebWriteEvent)> const&, bool) (this=this@entry=0x0, callBack=..., responseComplete=true)

at /storage/emeric/MesProgs/wt/wt-3.3.2-rc2/src/http/WtReply.C:429

#1 0x00007ffff7b7d6c6 in http::server::HTTPRequest::flush(Wt::WebRequest::ResponseState, boost::function<void (Wt::WebWriteEvent)> const&) (this=,

state=Wt::WebRequest::ResponseDone, callback=...) at /storage/emeric/MesProgs/wt/wt-3.3.2-rc2/src/http/HTTPRequest.C:44

#2 0x00007ffff7161c42 in Wt::Http::ResponseContinuation::stop (this=this@entry=0x7fffd8089920) at /storage/emeric/MesProgs/wt/wt-3.3.2-rc2/src/Wt/Http/ResponseContinuation.C:66

#3 0x00007ffff7161deb in Wt::Http::ResponseContinuation::doContinue (this=0x7fffd8089920, event=)

at /storage/emeric/MesProgs/wt/wt-3.3.2-rc2/src/Wt/Http/ResponseContinuation.C:29

#4 0x00007ffff7bb1b72 in operator() (a0=Wt::WriteError, this=0x7fffeb1e0580) at /usr/include/boost/function/function_template.hpp:767

#5 http::server::WtReply::writeDone (this=0x7fffd4078000, success=) at /storage/emeric/MesProgs/wt/wt-3.3.2-rc2/src/http/WtReply.C:420

#6 0x00007ffff7b73b09 in http::server::Connection::handleWriteResponse (this=0x7fffdc0334e0, reply=..., e=..., bytes_transferred=)

at /storage/emeric/MesProgs/wt/wt-3.3.2-rc2/src/http/Connection.C:430

#7 0x00007ffff7bac8c4 in call<boost::shared_ptrhttp::server::TcpConnection, boost::shared_ptrhttp::server::Reply, boost::system::error_code const, unsigned long> (

b3=, b2=..., b1=..., u=..., this=0x7fffeb1e0710) at /usr/include/boost/bind/mem_fn_template.hpp:384

#8 operator()<boost::shared_ptrhttp::server::TcpConnection > (a3=, a2=..., a1=..., u=..., this=0x7fffeb1e0710) at /usr/include/boost/bind/mem_fn_template.hpp:399

#9 operator()<boost::_mfi::mf3<void, http::server::Connection, boost::shared_ptrhttp::server::Reply, const boost::system::error_code&, long unsigned int>, boost::_bi::list2<const boost::system::error_code&, long unsigned int const&> > (a=, f=..., this=0x7fffeb1e0720) at /usr/include/boost/bind/bind.hpp:457

#10 operator()<boost::system::error_code, long unsigned int> (a2=@0x7fffeb1e0750: 65536, a1=..., this=0x7fffeb1e0710) at /usr/include/boost/bind/bind_template.hpp:102

The destructor of my a resource has been previously called (and it contains beingDeleted() in it)

Some of the members of the resource are quite long to be cleaned (an underlying forked process has be killed)

Actions #1

Updated by Koen Deforche over 10 years ago

  • Status changed from New to Feedback
  • Assignee set to Koen Deforche

Hey,

Could you see if the following patch resolves this issue?

diff ---git a/src/Wt/Http/ResponseContinuation.C b/src/Wt/Http/ResponseContinuation.C

index fc7f2dd..b91bf93 100644

---- a/src/Wt/Http/ResponseContinuation.C

  • b/src/Wt/Http/ResponseContinuation.C
    @@ --78,7 +78,6 @@ void ResponseContinuation::flagReadyToContinue(WebWriteEvent event)
    if (event WriteError) { // FIXME provide API to process event WriteError
    LOG_ERROR("WriteError");
  • stop();
    return;
    }

Regards,

koen

Actions #2

Updated by Emeric Poupon over 10 years ago

Unfortunately, the problem is still here!

Actions #3

Updated by Koen Deforche over 10 years ago

  • Status changed from Feedback to Resolved
  • Target version changed from 3.3.2 to 3.3.3

Solution provided by #2814

Actions #4

Updated by Koen Deforche over 10 years ago

  • Status changed from Resolved to Closed
Actions

Also available in: Atom PDF