Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filter::sendHeaders core dump #298

Closed
fenglonz opened this issue Nov 14, 2019 · 3 comments
Closed

Filter::sendHeaders core dump #298

fenglonz opened this issue Nov 14, 2019 · 3 comments

Comments

@fenglonz
Copy link

Hello!
When onError, core dump occurs; How to fix it?
Thanks!

Program terminated with signal 11, Segmentation fault.
#0 0x0000000000636fd6 in proxygen::Filter::sendHeaders(proxygen::HTTPMessage&) ()
Missing separate debuginfos, use: debuginfo-install bzip2-libs-1.0.6-13.el7.x86_64 elfutils-libelf-0.168-8.el7.x86_64 glibc-2.17-106.el7_2.8.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.13.2-12.el7_2.x86_64 libcom_err-1.42.9-7.el7.x86_64 libgcc-4.8.5-36.el7_6.1.x86_64 libselinux-2.2.2-6.el7.x86_64 openssl-libs-1.0.2k-16.el7.x86_64 pcre-8.32-15.el7_2.1.x86_64 snappy-1.1.0-3.el7.x86_64 xz-libs-5.2.2-1.el7.x86_64 zlib-1.2.7-17.el7.x86_64
(gdb) bt
#0 0x0000000000636fd6 in proxygen::Filter::sendHeaders(proxygen::HTTPMessage&) ()
#1 0x00000000006385f2 in proxygen::CompressionFilter::sendHeaders(proxygen::HTTPMessage&) ()
#2 0x000000000052aac3 in proxygen::ResponseBuilder::send (this=0x7fcc8179f290) at ../proxygenlib/proxygen/include/proxygen/httpserver/ResponseBuilder.h:164
#3 0x000000000052a8bc in proxygen::ResponseBuilder::sendWithEOM (this=0x7fcc8179f290) at ../proxygenlib/proxygen/include/proxygen/httpserver/ResponseBuilder.h:136
#4 0x0000000000528505 in broalgo::shield::PushRequestHandler::onError (this=0x7fcc74022a30, err=proxygen::kErrorRead) at server/shield_request_handler.cc:393
#5 0x0000000000636ee5 in proxygen::Filter::onError(proxygen::ProxygenError) ()
#6 0x0000000000687139 in proxygen::RequestHandlerAdaptor::setError(proxygen::ProxygenError) ()
#7 0x0000000000686b84 in proxygen::RequestHandlerAdaptor::onError(proxygen::HTTPException const&) ()
#8 0x00000000006e3b2f in proxygen::HTTPTransaction::onError(proxygen::HTTPException const&) ()
#9 0x00000000006bc44c in proxygen::HTTPSession::onError(unsigned long, proxygen::HTTPException const&, bool) ()
#10 0x000000000071583b in proxygen::PassThroughHTTPCodecFilter::onError(unsigned long, proxygen::HTTPException const&, bool) ()
#11 0x000000000072eb43 in proxygen::HTTP1xCodec::onParserError(char const*) ()
#12 0x000000000072e8a8 in proxygen::HTTP1xCodec::onIngressEOF() ()
#13 0x0000000000715f33 in proxygen::PassThroughHTTPCodecFilter::onIngressEOF() ()
#14 0x00000000006c5c12 in proxygen::HTTPSession::shutdownTransport(bool, bool, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) ()
#15 0x00000000006b89cd in proxygen::HTTPSession::readEOF() ()
#16 0x00007fcd020e41d0 in ?? ()
#17 0x00007fcc74010f68 in ?? ()
#18 0x00007fcc74001ca0 in ?? ()
#19 0x00007fcc8179f9e0 in ?? ()
#20 0x00000000006cf8b0 in folly::detail::ScopeGuardImpl<folly::IOBufQueue::updateGuard()::{lambda()#1}, true>::~ScopeGuardImpl() ()
#21 0x00007fcd020e25ca in ?? ()
#22 0x00000002817a2700 in ?? ()
#23 0x00007fcc74001ca0 in ?? ()
#24 0x00007fcc74001fa8 in ?? ()
#25 0x0000000038a00914 in ?? ()
#26 0x00007fcc8179fd50 in ?? ()
#27 0x00007fcd020fe946 in ?? ()
#28 0x00007fcc74000e40 in ?? ()
#29 0x00007fcc74000b90 in ?? ()
#30 0x00007fcc740010d0 in ?? ()
#31 0x00000000008abe42 in event_active_nolock (ev=0x0, res=, ncalls=) at event.c:2341
#32 0x00007fcc74001e28 in ?? ()
#33 0x00007fcc8179fd50 in ?? ()
#34 0x00007fcd020e9fa7 in ?? ()
#35 0x0000000200000054 in ?? ()
#36 0x00007fcc74001e28 in ?? ()
#37 0x00007fcc8179fd80 in ?? ()
#38 0x00007fcd02111ced in ?? ()
#39 0x00007fcc74001e28 in ?? ()
#40 0x0000005400070002 in ?? ()
#41 0x0000000000000000 in ?? ()

My code:
383 void PushRequestHandler::onError(ProxygenError err) noexcept {
384 LOG_ERROR( "Client error: %s", proxygen::getErrorString(err));
385 gPushBody_="version=0.0.2|r=|d=";
386 if (body_)
387 LOG_ERROR( "Client error: %s", body_->data());
388 ResponseBuilder(downstream_)
389 .status(200, "OK")
390 .header("Request-Number",
391 folly::tostd::string(stats_->getRequestCount()))
392 .body(gPushBody_)
393 .sendWithEOM();
394 if (this != NULL) {
395 delete this;
396 }
397 }

@lnicco
Copy link
Contributor

lnicco commented Nov 14, 2019

@fenglonz the onError() callback means that the transaction has hit an unrecoverable error condition.
It looks like you are trying to send a response from there, which will be impossible given the above condition.
Your paste does not include console logs, but I am guessing that would result in an invalid state machine transition, hence the program abort.

@lnicco
Copy link
Contributor

lnicco commented Dec 9, 2019

could you please post here a command that we can use to reproduce your issue ?

@afrind
Copy link
Contributor

afrind commented Jul 1, 2020

Closing due to lack of engagement. Please reopen if you have a way we can reproduce.

@afrind afrind closed this as completed Jul 1, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants