Bug during Abort close from `write_callbacks_`
- Dominant language
- C++
- Stars
- 28.9k
- Forks
- 5.6k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 437
Description
cc @dyumin
I have the following filter chain
```
static_resources:
listeners:
- name: listener
address:
socket_address:
address: 0.0.0.0
port_value: 8554
filter_chains:
- filters:
- name: my_filter
typed_config:
"@type": "type.googleapis.com/envoy.extensions.filt.filt"
allow_cleartext: true
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": [type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager](http://type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager)
stat_prefix: pref
codec_type: auto
generate_request_id: false
http2_protocol_options:
override_stream_error_on_invalid_http_message: true
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains:
- "*"
routes:
- match:
prefix: "/path"
route:
cluster: cluss
http_filters:
- name: envoy.filters.http.router
typed_config:
"@type": [type.googleapis.com/envoy.extensions.filters.http.router.v3.Router](http://type.googleapis.com/envoy.extensions.filters.http.router.v3.Router)
suppress_envoy_headers: true
clusters:
- name: cluss
type: strict_dns
dns_lookup_family: v4_only
lb_policy: round_robin
connect_timeout: 1.25s
typed_extension_protocol_options:
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
"@type": [type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions](http://type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions)
explicit_http_config:
http2_protocol_options: {}
common_http_protocol_options:
max_requests_per_connection: 100000
load_assignment:
cluster_name: url
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 127.0.0.1
port_value: 5000
```
where my_filter converts incoming data to http1 request and passes it further to the chain via injectReadDataToFilterChain
If I call write_callbacks_->connection().close(Envoy::Network::ConnectionCloseType::Abort,...) in my_filter inside onWrite (when processing http1 response from an upstream filter)
Callstack:
```
#0 Envoy::Network::ConnectionImpl::close (this=0x11443fd6b340, type=Envoy::Network::ConnectionCloseType::Abort, details=...) at external/envoy/source/common/network/connection_impl.h:73
#1 0x000055555749dbca in Envoy::Filter::filt::onWrite (this=0x11443fda77b0, data=..., end_stream=false) at filt.cc:288
#2 0x0000555556d41b79 in Envoy::Network::FilterManagerImpl::onWrite (this=0x11443fd6b3d8, filter=0x0, buffer_source=...) at external/envoy/source/common/network/filter_manager_impl.cc:206
#3 0x0000555556d419e8 in Envoy::Network::FilterManagerImpl::onWrite (this=0x11443fd6b3d8) at external/envoy/source/common/network/filter_manager_impl.cc:180
#4 0x0000555556c28002 in Envoy::Network::ConnectionImpl::write (this=0x11443fd6b340, data=..., end_stream=false, through_filter_chain=true) at external/envoy/source/common/network/connection_impl.cc:563
#5 0x0000555556c27258 in Envoy::Network::ConnectionImpl::write (this=0x11443fd6b340, data=..., end_stream=false) at external/envoy/source/common/network/connection_impl.cc:541
#6 0x0000555556541df1 in Envoy::Http::Http1::ConnectionImpl::flushOutput (this=0x11443fff7c08, end_encode=true) at external/envoy/source/common/http/http1/codec_impl.cc:358
#7 0x00005555565409df in Envoy::Http::Http1::StreamEncoderImpl::flushOutput (this=0x11443fdc6210, end_encode=true) at external/envoy/source/common/http/http1/codec_impl.cc:270
#8 0x0000555556540cfb in Envoy::Http::Http1::StreamEncoderImpl::endEncode (this=0x11443fdc6210) at external/envoy/source/common/http/http1/codec_impl.cc:307
#9 0x00005555565408fe in Envoy::Http::Http1::StreamEncoderImpl::encodeData (this=0x11443fdc6210, data=..., end_stream=true) at external/envoy/source/common/http/http1/codec_impl.cc:263
#10 0x00005555565086dc in Envoy::Http::ConnectionManagerImpl::ActiveStream::encodeData (this=0x11443fff7500, data=..., end_stream=true) at external/envoy/source/common/http/conn_manager_impl.cc:1975
#11 0x00005555566c5d67 in Envoy::Http::FilterManager::encodeData (this=0x11443fff75c8, filter=0x0, data=..., end_stream=true, filter_iteration_start_state=Envoy::Http::FilterManager::FilterIterationStartState::CanStartFromCurrent) at external/envoy/source/common/http/filter_manager.cc:1493
#12 0x00005555566b0f2a in Envoy::Http::ActiveStreamDecoderFilter::encodeData (this=0x11443fd90c00, data=..., end_stream=true) at external/envoy/source/common/http/filter_manager.cc:523
#13 0x000055555662c51b in Envoy::Router::Filter::onUpstreamData (this=0x11443fa2e790, data=..., upstream_request=..., end_stream=true) at external/envoy/source/common/router/router.cc:1879
#14 0x0000555556659990 in Envoy::Router::UpstreamRequest::decodeData (this=0x11443fa74000, data=..., end_stream=true) at external/envoy/source/common/router/upstream_request.cc:326
#15 0x0000555556665d8e in Envoy::Router::UpstreamRequestFilterManagerCallbacks::encodeData (this=0x11443fd93540, data=..., end_stream=true) at external/envoy/source/common/router/upstream_request.h:280
#16 0x00005555566c5d67 in Envoy::Http::FilterManager::encodeData (this=0x11443fd65110, filter=0x0, data=..., end_stream=true, filter_iteration_start_state=Envoy::Http::FilterManager::FilterIterationStartState::CanStartFromCurrent) at external/envoy/source/common/http/filter_manager.cc:1493
#17 0x00005555566b0f2a in Envoy::Http::ActiveStreamDecoderFilter::encodeData (this=0x11443fd90680, data=..., end_stream=true) at external/envoy/source/common/http/filter_manager.cc:523
#18 0x0000555556677504 in Envoy::Router::UpstreamCodecFilter::CodecBridge::decodeData (this=0x11443fd90bb0, data=..., end_stream=true) at external/envoy/source/common/router/upstream_codec_filter.cc:207
#19 0x0000555555edcb3d in Envoy::Http::ResponseDecoderWrapper::decodeData (this=0x11443fdb5b40, data=..., end_stream=true) at external/envoy/source/common/http/codec_wrappers.h:44
#20 0x00005555565a53a0 in Envoy::Http::Http2::ConnectionImpl::StreamImpl::decodeData (this=0x11443fa138c0) at external/envoy/source/common/http/http2/codec_impl.cc:525
#21 0x00005555565b3bdc in Envoy::Http::Http2::ConnectionImpl::onBeginData (this=0x11443fdcc708, stream_id=1, length=71, flags=1 '\001', padding=0) at external/envoy/source/common/http/http2/codec_impl.cc:1132
#22 0x00005555565c44af in Envoy::Http::Http2::ConnectionImpl::Http2Visitor::OnEndStream (this=0x11443fdb5ab0, stream_id=1) at external/envoy/source/common/http/http2/codec_impl.cc:1873
#23 0x0000555556eb22ad in http2::adapter::OgHttp2Session::OnStreamEnd (this=0x11443ffacd10, stream_id=1) at external/com_github_google_quiche/quiche/http2/adapter/oghttp2_session.cc:1218
#24 0x0000555556edefbb in http2::adapter::EventForwarder::OnStreamEnd (this=0x11443ffacd70, stream_id=1) at external/com_github_google_quiche/quiche/http2/adapter/event_forwarder.cc:43
#25 0x0000555556ee1f86 in http2::Http2TraceLogger::OnStreamEnd (this=0x11443ffacdb0, stream_id=1) at external/com_github_google_quiche/quiche/http2/core/http2_trace_logging.cc:174
#26 0x0000555556fbf38e in http2::Http2DecoderAdapter::OnDataEnd (this=0x11443fface80) at external/com_github_google_quiche/quiche/http2/core/http2_frame_decoder_adapter.cc:420
#27 0x0000555556fd084c in http2::DataPayloadDecoder::StartDecodingPayload (this=0x11443ffad138, state=0x11443ffad108, db=0x7ffff5adf860) at external/com_github_google_quiche/quiche/http2/decoder/payload_decoders/data_payload_decoder.cc:69
#28 0x0000555556fc9ffc in http2::Http2FrameDecoder::StartDecodingDataPayload (this=0x11443ffad108, db=0x7ffff5adf860) at external/com_github_google_quiche/quiche/http2/decoder/http2_frame_decoder.cc:293
#29 0x0000555556fc9406 in http2::Http2FrameDecoder::StartDecodingPayload (this=0x11443ffad108, db=0x7ffff5adfcf0) at external/com_github_google_quiche/quiche/http2/decoder/http2_frame_decoder.cc:117
#30 0x0000555556fc8e5f in http2::Http2FrameDecoder::DecodeFrame (this=0x11443ffad108, db=0x7ffff5adfcf0) at external/com_github_google_quiche/quiche/http2/decoder/http2_frame_decoder.cc:57
#31 0x0000555556fc3cd5 in http2::Http2DecoderAdapter::ProcessInputFrame (this=0x11443fface80, data=0x11443fa44000 "", len=80) at external/com_github_google_quiche/quiche/http2/core/http2_frame_decoder_adapter.cc:800
#32 0x0000555556fbdbd4 in http2::Http2DecoderAdapter::ProcessInput (this=0x11443fface80, data=0x11443fa44000 "", len=80) at external/com_github_google_quiche/quiche/http2/core/http2_frame_decoder_adapter.cc:272
#33 0x0000555556ead5c5 in http2::adapter::OgHttp2Session::ProcessBytesImpl (this=0x11443ffacd10, bytes=...) at external/com_github_google_quiche/quiche/http2/adapter/oghttp2_session.cc:526
#34 0x0000555556eacec1 in http2::adapter::OgHttp2Session::ProcessBytes (this=0x11443ffacd10, bytes=...) at external/com_github_google_quiche/quiche/http2/adapter/oghttp2_session.cc:487
#35 0x0000555556ea7c8f in http2::adapter::OgHttp2Adapter::ProcessBytes (this=0x11443ffacd00, bytes=...) at external/com_github_google_quiche/quiche/http2/adapter/oghttp2_adapter.cc:38
#36 0x00005555565b0a56 in Envoy::Http::Http2::ConnectionImpl::dispatch (this=0x11443fdcc708, data=...) at external/envoy/source/common/http/http2/codec_impl.cc:972
#37 0x00005555561e8468 in Envoy::Http::CodecClient::onData (this=0x11443fda7b90, data=...) at external/envoy/source/common/http/codec_client.cc:176
#38 0x00005555561e99aa in Envoy::Http::CodecClient::CodecReadFilter::onData (this=0x11443fdc0730, data=..., end_stream=false) at external/envoy/source/common/http/codec_client.h:221
#39 0x0000555556d3f706 in Envoy::Network::FilterManagerImpl::onContinueReading (this=0x11443fffb498, filter=0x0, buffer_source=...) at external/envoy/source/common/network/filter_manager_impl.cc:92
#40 0x0000555556d3fb6e in Envoy::Network::FilterManagerImpl::onRead (this=0x11443fffb498) at external/envoy/source/common/network/filter_manager_impl.cc:102
#41 0x0000555556c24b66 in Envoy::Network::ConnectionImpl::onRead (this=0x11443fffb400, read_buffer_size=80) at external/envoy/source/common/network/connection_impl.cc:428
#42 0x0000555556c2d11b in Envoy::Network::ConnectionImpl::onReadReady (this=0x11443fffb400) at external/envoy/source/common/network/connection_impl.cc:772
#43 0x0000555556c2bcf2 in Envoy::Network::ConnectionImpl::onFileEvent (this=0x11443fffb400, events=3) at external/envoy/source/common/network/connection_impl.cc:698
#44 0x0000555556c1cb0b in operator() (__closure=0x11443fda3308, events=3) at external/envoy/source/common/network/connection_impl.cc:109
#45 0x0000555556c393ef in std::__invoke_impl&, unsigned int>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/14/bits/invoke.h:61
#46 0x0000555556c38d43 in std::__invoke_r&, unsigned int>(struct {...} &) (__fn=...) at /usr/include/c++/14/bits/invoke.h:116
#47 0x0000555556c382f4 in std::_Function_handler >::_M_invoke(const std::_Any_data &, unsigned int &&) (__functor=..., __args#0=@0x7ffff5ae129c: 3) at /usr/include/c++/14/bits/std_function.h:291
#48 0x0000555556bf25f2 in std::function::operator()(unsigned int) const (this=0x11443fda3308, __args#0=3) at /usr/include/c++/14/bits/std_function.h:591
#49 0x0000555556be7808 in operator() (__closure=0x11443fda3300, events=3) at external/envoy/source/common/event/dispatcher_impl.cc:202
#50 0x0000555556bf027b in std::__invoke_impl&, unsigned int>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/14/bits/invoke.h:61
#51 0x0000555556bef87f in std::__invoke_r&, unsigned int>(struct {...} &) (__fn=...) at /usr/include/c++/14/bits/invoke.h:116
#52 0x0000555556beed7e in std::_Function_handler >::_M_invoke(const std::_Any_data &, unsigned int &&) (__functor=..., __args#0=@0x7ffff5ae13cc: 3) at /usr/include/c++/14/bits/std_function.h:291
#53 0x0000555556bf25f2 in std::function::operator()(unsigned int) const (this=0x11443fd73888, __args#0=3) at /usr/include/c++/14/bits/std_function.h:591
#54 0x0000555556bfe703 in Envoy::Event::FileEventImpl::mergeInjectedEventsAndRunCb (this=0x11443fd73800, events=3) at external/envoy/source/common/event/file_event_impl.cc:161
#55 0x0000555556bfcae3 in operator() (__closure=0x0, what=38, arg=0x11443fd73800) at external/envoy/source/common/event/file_event_impl.cc:82
#56 0x0000555556bfcb6b in _FUN () at external/envoy/source/common/event/file_event_impl.cc:83
#57 0x00005555581b5dfd in event_persist_closure (base=0x11443fe79340, ev=0x11443fd73808) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:1645
#58 0x00005555581b60fa in event_process_active_single_queue (base=0x11443fe79340, activeq=0x11443fc02f60, max_to_process=2147483647, endtime=0x0) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:1704
#59 0x00005555581b66ad in event_process_active (base=0x11443fe79340) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:1805
#60 0x00005555581b6fb8 in event_base_loop (base=0x11443fe79340, flags=0) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:2047
#61 0x0000555557384e10 in Envoy::Event::LibeventScheduler::run (this=0x11443ff9b210, mode=Envoy::Event::Dispatcher::RunType::Block) at external/envoy/source/common/event/libevent_scheduler.cc:61
#62 0x0000555556bea399 in Envoy::Event::DispatcherImpl::run (this=0x11443ff9b180, type=Envoy::Event::Dispatcher::RunType::Block) at external/envoy/source/common/event/dispatcher_impl.cc:298
#63 0x0000555555cf2055 in Envoy::Server::WorkerImpl::threadRoutine(Envoy::OptRef, std::function const&) (this=0x11443fd20f50, guard_dog=..., cb=...) at external/envoy/source/server/worker_impl.cc:156
#64 0x0000555555cf119a in operator() (__closure=0x11443fdbb8c0) at external/envoy/source/server/worker_impl.cc:119
#65 0x0000555555cf38b8 in std::__invoke_impl, const std::function&)::&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/14/bits/invoke.h:61
#66 0x0000555555cf343c in std::__invoke_r, const std::function&)::&>(struct {...} &) (__fn=...) at /usr/include/c++/14/bits/invoke.h:111
#67 0x0000555555cf2d4d in std::_Function_handler, const std::function&):: >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/14/bits/std_function.h:290
#68 0x0000555555aafdaa in std::function::operator()() const (this=0x11443fdba280) at /usr/include/c++/14/bits/std_function.h:591
#69 0x0000555557fec1ae in operator() (__closure=0x0, arg=0x11443fdba280) at external/envoy/source/common/common/posix/thread_impl.cc:178
#70 0x0000555557fec1da in _FUN () at external/envoy/source/common/common/posix/thread_impl.cc:180
#71 0x00007ffff7c9caa4 in start_thread (arg=) at ./nptl/pthread_create.c:447
#72 0x00007ffff7d29c6c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
```
Then ConnectionImpl gets deallocated:
```
#0 Envoy::Network::ConnectionImpl::~ConnectionImpl (this=0x11443fd6b340, __vtt_parm=0x55555aa43ef8 , __in_chrg=) at external/envoy/source/common/network/connection_impl.cc:130
#1 0x0000555556c3d68a in Envoy::Network::ServerConnectionImpl::~ServerConnectionImpl (this=0x11443fd6b340, __in_chrg=, __vtt_parm=) at external/envoy/source/common/network/connection_impl.h:269
#2 0x0000555556c3d742 in Envoy::Network::ServerConnectionImpl::~ServerConnectionImpl (this=0x11443fd6b340, __in_chrg=, __vtt_parm=) at external/envoy/source/common/network/connection_impl.h:269
#3 0x00005555563ea742 in std::default_delete::operator() (this=0x11443fdb9c70, __ptr=0x11443fd6b4d0) at /usr/include/c++/14/bits/unique_ptr.h:93
#4 0x00005555563e958e in std::unique_ptr >::~unique_ptr (this=0x11443fdb9c70, __in_chrg=) at /usr/include/c++/14/bits/unique_ptr.h:398
#5 0x00005555563eeb0c in Envoy::Server::ActiveTcpConnection::~ActiveTcpConnection (this=0x11443fdb9c40, __in_chrg=) at external/envoy/source/common/listener_manager/active_stream_listener_base.cc:111
#6 0x00005555563eeb64 in Envoy::Server::ActiveTcpConnection::~ActiveTcpConnection (this=0x11443fdb9c40, __in_chrg=) at external/envoy/source/common/listener_manager/active_stream_listener_base.cc:111
#7 0x0000555555e369ae in std::default_delete::operator() (this=0x11443fdbbae0, __ptr=0x11443fdb9c40) at /usr/include/c++/14/bits/unique_ptr.h:93
#8 0x0000555556bf3f2a in std::__uniq_ptr_impl >::reset (this=0x11443fdbbae0, __p=0x0) at /usr/include/c++/14/bits/unique_ptr.h:205
#9 0x0000555556bf2223 in std::unique_ptr >::reset (this=0x11443fdbbae0, __p=0x0) at /usr/include/c++/14/bits/unique_ptr.h:503
#10 0x0000555556be64a4 in Envoy::Event::DispatcherImpl::clearDeferredDeleteList (this=0x11443ff9b180) at external/envoy/source/common/event/dispatcher_impl.cc:140
#11 0x0000555556be41a9 in operator() (__closure=0x11443fc37de0) at external/envoy/source/common/event/dispatcher_impl.cc:77
#12 0x0000555556befe24 in std::__invoke_impl&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/14/bits/invoke.h:61
#13 0x0000555556bef364 in std::__invoke_r&>(struct {...} &) (__fn=...) at /usr/include/c++/14/bits/invoke.h:111
#14 0x0000555556beea20 in std::_Function_handler >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/14/bits/std_function.h:290
#15 0x0000555555aafdaa in std::function::operator()() const (this=0x11443fc37de0) at /usr/include/c++/14/bits/std_function.h:591
#16 0x000055555738749d in operator() (__closure=0x0, arg=0x11443fc37d60) at external/envoy/source/common/event/schedulable_cb_impl.cc:14
#17 0x00005555573874d0 in _FUN () at external/envoy/source/common/event/schedulable_cb_impl.cc:14
#18 0x00005555581b61ab in event_process_active_single_queue (base=0x11443fe79340, activeq=0x11443fc02f60, max_to_process=2147483647, endtime=0x0) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:1713
#19 0x00005555581b66ad in event_process_active (base=0x11443fe79340) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:1805
#20 0x00005555581b6fb8 in event_base_loop (base=0x11443fe79340, flags=0) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:2047
#21 0x0000555557384e10 in Envoy::Event::LibeventScheduler::run (this=0x11443ff9b210, mode=Envoy::Event::Dispatcher::RunType::Block) at external/envoy/source/common/event/libevent_scheduler.cc:61
#22 0x0000555556bea399 in Envoy::Event::DispatcherImpl::run (this=0x11443ff9b180, type=Envoy::Event::Dispatcher::RunType::Block) at external/envoy/source/common/event/dispatcher_impl.cc:298
#23 0x0000555555cf2055 in Envoy::Server::WorkerImpl::threadRoutine(Envoy::OptRef, std::function const&) (this=0x11443fd20f50, guard_dog=..., cb=...) at external/envoy/source/server/worker_impl.cc:156
#24 0x0000555555cf119a in operator() (__closure=0x11443fdbb8c0) at external/envoy/source/server/worker_impl.cc:119
#25 0x0000555555cf38b8 in std::__invoke_impl, const std::function&)::&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/14/bits/invoke.h:61
#26 0x0000555555cf343c in std::__invoke_r, const std::function&)::&>(struct {...} &) (__fn=...) at /usr/include/c++/14/bits/invoke.h:111
#27 0x0000555555cf2d4d in std::_Function_handler, const std::function&):: >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/14/bits/std_function.h:290
#28 0x0000555555aafdaa in std::function::operator()() const (this=0x11443fdba280) at /usr/include/c++/14/bits/std_function.h:591
#29 0x0000555557fec1ae in operator() (__closure=0x0, arg=0x11443fdba280) at external/envoy/source/common/common/posix/thread_impl.cc:178
#30 0x0000555557fec1da in _FUN () at external/envoy/source/common/common/posix/thread_impl.cc:180
#31 0x00007ffff7c9caa4 in start_thread (arg=) at ./nptl/pthread_create.c:447
#32 0x00007ffff7d29c6c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
```
After which StreamEncoderImpl tries to enable writes on this exact connection:
```
#0 0x0000000000000000 in ?? ()
#1 0x0000555556562b36 in Envoy::Http::Http1::ConnectionImpl::readDisable (this=0x11443fff7c08, disable=false) at external/envoy/source/common/http/http1/codec_impl.h:248
#2 0x000055555654258a in Envoy::Http::Http1::StreamEncoderImpl::readDisable (this=0x11443fdc6210, disable=false) at external/envoy/source/common/http/http1/codec_impl.cc:397
#3 0x00005555565620f8 in Envoy::Http::Http1::StreamEncoderImpl::~StreamEncoderImpl (this=0x11443fdc6210, __vtt_parm=0x55555aa18d38 , __in_chrg=) at external/envoy/source/common/http/http1/codec_impl.h:48
#4 0x0000555556562765 in Envoy::Http::Http1::ResponseEncoderImpl::~ResponseEncoderImpl (this=0x11443fdc6210, __in_chrg=, __vtt_parm=) at external/envoy/source/common/http/http1/codec_impl.h:157
#5 0x000055555656ab6e in Envoy::Http::Http1::ServerConnectionImpl::ActiveRequest::~ActiveRequest (this=0x11443fdc6170, __in_chrg=) at external/envoy/source/common/http/http1/codec_impl.h:485
#6 0x000055555656abaa in Envoy::Http::Http1::ServerConnectionImpl::ActiveRequest::~ActiveRequest (this=0x11443fdc6170, __in_chrg=) at external/envoy/source/common/http/http1/codec_impl.h:485
#7 0x0000555555e369ae in std::default_delete::operator() (this=0x11443fdbbaf0, __ptr=0x11443fdc6170) at /usr/include/c++/14/bits/unique_ptr.h:93
#8 0x0000555556bf3f2a in std::__uniq_ptr_impl >::reset (this=0x11443fdbbaf0, __p=0x0) at /usr/include/c++/14/bits/unique_ptr.h:205
#9 0x0000555556bf2223 in std::unique_ptr >::reset (this=0x11443fdbbaf0, __p=0x0) at /usr/include/c++/14/bits/unique_ptr.h:503
#10 0x0000555556be64a4 in Envoy::Event::DispatcherImpl::clearDeferredDeleteList (this=0x11443ff9b180) at external/envoy/source/common/event/dispatcher_impl.cc:140
#11 0x0000555556be41a9 in operator() (__closure=0x11443fc37de0) at external/envoy/source/common/event/dispatcher_impl.cc:77
#12 0x0000555556befe24 in std::__invoke_impl&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/14/bits/invoke.h:61
#13 0x0000555556bef364 in std::__invoke_r&>(struct {...} &) (__fn=...) at /usr/include/c++/14/bits/invoke.h:111
#14 0x0000555556beea20 in std::_Function_handler >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/14/bits/std_function.h:290
#15 0x0000555555aafdaa in std::function::operator()() const (this=0x11443fc37de0) at /usr/include/c++/14/bits/std_function.h:591
#16 0x000055555738749d in operator() (__closure=0x0, arg=0x11443fc37d60) at external/envoy/source/common/event/schedulable_cb_impl.cc:14
#17 0x00005555573874d0 in _FUN () at external/envoy/source/common/event/schedulable_cb_impl.cc:14
#18 0x00005555581b61ab in event_process_active_single_queue (base=0x11443fe79340, activeq=0x11443fc02f60, max_to_process=2147483647, endtime=0x0) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:1713
#19 0x00005555581b66ad in event_process_active (base=0x11443fe79340) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:1805
#20 0x00005555581b6fb8 in event_base_loop (base=0x11443fe79340, flags=0) at /home/dyumin/git/central/cmake-build-Debug/_bazel/896e06fcd214b5887839802fb094c68f/execroot/filt/external/com_github_libevent_libevent/event.c:2047
#21 0x0000555557384e10 in Envoy::Event::LibeventScheduler::run (this=0x11443ff9b210, mode=Envoy::Event::Dispatcher::RunType::Block) at external/envoy/source/common/event/libevent_scheduler.cc:61
#22 0x0000555556bea399 in Envoy::Event::DispatcherImpl::run (this=0x11443ff9b180, type=Envoy::Event::Dispatcher::RunType::Block) at external/envoy/source/common/event/dispatcher_impl.cc:298
#23 0x0000555555cf2055 in Envoy::Server::WorkerImpl::threadRoutine(Envoy::OptRef, std::function const&) (this=0x11443fd20f50, guard_dog=..., cb=...) at external/envoy/source/server/worker_impl.cc:156
#24 0x0000555555cf119a in operator() (__closure=0x11443fdbb8c0) at external/envoy/source/server/worker_impl.cc:119
#25 0x0000555555cf38b8 in std::__invoke_impl, const std::function&)::&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/14/bits/invoke.h:61
#26 0x0000555555cf343c in std::__invoke_r, const std::function&)::&>(struct {...} &) (__fn=...) at /usr/include/c++/14/bits/invoke.h:111
#27 0x0000555555cf2d4d in std::_Function_handler, const std::function&):: >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/14/bits/std_function.h:290
#28 0x0000555555aafdaa in std::function::operator()() const (this=0x11443fdba280) at /usr/include/c++/14/bits/std_function.h:591
#29 0x0000555557fec1ae in operator() (__closure=0x0, arg=0x11443fdba280) at external/envoy/source/common/common/posix/thread_impl.cc:178
#30 0x0000555557fec1da in _FUN () at external/envoy/source/common/common/posix/thread_impl.cc:180
#31 0x00007ffff7c9caa4 in start_thread (arg=) at ./nptl/pthread_create.c:447
#32 0x00007ffff7d29c6c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
```
At which point it crashes
Related commit:
https://github.com/envoyproxy/envoy/commit/612b15f9a2ba286c80ddc51f0392d7ff2cdbdfab#r174629327
Contributor guide
Assessment
This issue has not been assessed yet.