You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
At Lyft, we've observed an Envoy crash with the following stack trace on build 6d9de10:
Backtrace:
#0 0x00007f05ab87ac37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#0 0x00007f05ab87ac37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 #1 0x00007f05ab87e028 in __GI_abort () at abort.c:89 #2 0x0000000000bd711d in __gnu_cxx::__verbose_terminate_handler() () #3 0x0000000000ba3df6 in __cxxabiv1::__terminate(void ()()) () #4 0x0000000000ba3e31 in std::terminate() () #5 0x0000000000ba52a8 in __cxa_throw () #6 0x0000000000b80ea7 in absl::optional_internal::throw_bad_optional_access() () #7 0x00000000007100af in value (this=) at external/com_google_absl/absl/types/optional.h:844 #8 Envoy::Http::ConnectionManagerImpl::ActiveStream::createFilterChain (this=this@entry=0x3cbd2000) at external/envoy/source/common/http/conn_manager_impl.cc:1408 #9 0x000000000071559b in createFilterChain (this=0x3cbd2000) at external/envoy/source/common/http/conn_manager_impl.cc:1001 #10 Envoy::Http::ConnectionManagerImpl::ActiveStream::sendLocalReply(bool, Envoy::Http::Code, std::string const&, std::function<void (Envoy::Http::HeaderMap&)> const&, bool, absl::optionalEnvoy::Grpc::Status::GrpcStatus) (this=this@entry=0x3cbd2000, is_grpc_request=is_grpc_request@entry=false, code=code@entry=Envoy::Http::UpgradeRequired, body=..., modify_headers=..., is_head_request=is_head_request@entry=false, grpc_status=...) at external/envoy/source/common/http/conn_manager_impl.cc:1002 #11 0x000000000071ab1b in Envoy::Http::ConnectionManagerImpl::ActiveStream::decodeHeaders(std::unique_ptr<Envoy::Http::HeaderMap, std::default_deleteEnvoy::Http::HeaderMap >&&, bool) (this=0x3cbd2000, headers=, end_stream=true) at external/envoy/source/common/http/conn_manager_impl.cc:573 #12 0x000000000074154a in Envoy::Http::Http1::ServerConnectionImpl::onMessageComplete (this=0x4398b40) at external/envoy/source/common/http/http1/codec_impl.cc:623 #13 0x0000000000744afc in Envoy::Http::Http1::ConnectionImpl::onMessageCompleteBase (this=0x4398b48) at external/envoy/source/common/http/http1/codec_impl.cc:442 #14 0x0000000000744bbd in operator() (__closure=0x0, parser=) at external/envoy/source/common/http/http1/codec_impl.cc:294 #15 Envoy::Http::Http1::ConnectionImpl::<lambda(http_parser)>::_FUN(http_parser ) () at external/envoy/source/common/http/http1/codec_impl.cc:296 #16 0x0000000000747a9f in http_parser_execute () #17 0x00000000007427c2 in Envoy::Http::Http1::ConnectionImpl::dispatchSlice (this=this@entry=0x4398b48, slice=, len=) at external/envoy/source/common/http/http1/codec_impl.cc:378 #18 0x00000000007445b3 in Envoy::Http::Http1::ConnectionImpl::dispatch (this=0x4398b48, data=...) at external/envoy/source/common/http/http1/codec_impl.cc:363 #19 0x0000000000717988 in Envoy::Http::ConnectionManagerImpl::onData (this=0x156381c0, data=...) at external/envoy/source/common/http/conn_manager_impl.cc:230 #20 0x00000000005f30e7 in Envoy::Network::FilterManagerImpl::onContinueReading (this=this@entry=0x29ad8018, filter=filter@entry=0x0) at external/envoy/source/common/network/filter_manager_impl.cc:60 #21 0x00000000005f31bc in Envoy::Network::FilterManagerImpl::onRead (this=this@entry=0x29ad8018) at external/envoy/source/common/network/filter_manager_impl.cc:70 #22 0x00000000005f041f in onRead (read_buffer_size=205, this=0x29ad8000) at external/envoy/source/common/network/connection_impl.cc:263 #23 Envoy::Network::ConnectionImpl::onReadReady (this=this@entry=0x29ad8000) at external/envoy/source/common/network/connection_impl.cc:496 #24 0x00000000005f0c6e in Envoy::Network::ConnectionImpl::onFileEvent (this=0x29ad8000, events=3) at external/envoy/source/common/network/connection_impl.cc:472 #25 0x00000000005ea7f8 in operator() (__args#0=3, this=) at /usr/include/c++/5/functional:2267 #26 operator() (__closure=0x0, arg=, what=) at external/envoy/source/common/event/file_event_impl.cc:60 #27 Envoy::Event::FileEventImpl::<lambda(int, short int, void)>::_FUN(int, short, void ) () at external/envoy/source/common/event/file_event_impl.cc:61 #28 0x00000000008b9cef in event_persist_closure (ev=, base=0x2456dc0) at ../event.c:1580 #29 event_process_active_single_queue (base=base@entry=0x2456dc0, max_to_process=max_to_process@entry=2147483647, endtime=endtime@entry=0x0, activeq=) at ../event.c:1639 #30 0x00000000008ba41f in event_process_active (base=base@entry=0x2456dc0) at ../event.c:1738 #31 0x00000000008bd178 in event_base_loop (base=0x2456dc0, flags=) at ../event.c:1961 #32 0x00000000005e66b6 in Envoy::Server::WorkerImpl::threadRoutine (this=0x2edecc0, guard_dog=...) at external/envoy/source/server/worker_impl.cc:101 #33 0x00000000008cabe5 in Envoy::Thread::ThreadImpl::ThreadImpl(std::function<void ()>)::{lambda(void)#1}::_FUN(void*) () at /usr/include/c++/5/functional:2267 #34 0x00007f05abf1b184 in start_thread (arg=0x7f05a8c79700) at pthread_create.c:312 #35 0x00007f05ab94203d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
This is due to the usage of std:optional::value() to check whether an optional variable has a value instead of std::optional::has_value(). value() throws an exception if has_value() would return false, so I suspect the intention is what can be found in this PR.
Please let me know if I'm misunderstanding something.
Risk Level:
Low
Testing:
Existing UTs
The text was updated successfully, but these errors were encountered:
As reported by @tonya11en
At Lyft, we've observed an Envoy crash with the following stack trace on build 6d9de10:
Backtrace:
#0 0x00007f05ab87ac37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#0 0x00007f05ab87ac37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007f05ab87e028 in __GI_abort () at abort.c:89
#2 0x0000000000bd711d in __gnu_cxx::__verbose_terminate_handler() ()
#3 0x0000000000ba3df6 in __cxxabiv1::__terminate(void ()()) ()
#4 0x0000000000ba3e31 in std::terminate() ()
#5 0x0000000000ba52a8 in __cxa_throw ()
#6 0x0000000000b80ea7 in absl::optional_internal::throw_bad_optional_access() ()
#7 0x00000000007100af in value (this=) at external/com_google_absl/absl/types/optional.h:844
#8 Envoy::Http::ConnectionManagerImpl::ActiveStream::createFilterChain (this=this@entry=0x3cbd2000) at external/envoy/source/common/http/conn_manager_impl.cc:1408
#9 0x000000000071559b in createFilterChain (this=0x3cbd2000) at external/envoy/source/common/http/conn_manager_impl.cc:1001
#10 Envoy::Http::ConnectionManagerImpl::ActiveStream::sendLocalReply(bool, Envoy::Http::Code, std::string const&, std::function<void (Envoy::Http::HeaderMap&)> const&, bool, absl::optionalEnvoy::Grpc::Status::GrpcStatus) (this=this@entry=0x3cbd2000, is_grpc_request=is_grpc_request@entry=false, code=code@entry=Envoy::Http::UpgradeRequired, body=..., modify_headers=..., is_head_request=is_head_request@entry=false, grpc_status=...) at external/envoy/source/common/http/conn_manager_impl.cc:1002
#11 0x000000000071ab1b in Envoy::Http::ConnectionManagerImpl::ActiveStream::decodeHeaders(std::unique_ptr<Envoy::Http::HeaderMap, std::default_deleteEnvoy::Http::HeaderMap >&&, bool) (this=0x3cbd2000, headers=, end_stream=true) at external/envoy/source/common/http/conn_manager_impl.cc:573
#12 0x000000000074154a in Envoy::Http::Http1::ServerConnectionImpl::onMessageComplete (this=0x4398b40) at external/envoy/source/common/http/http1/codec_impl.cc:623
#13 0x0000000000744afc in Envoy::Http::Http1::ConnectionImpl::onMessageCompleteBase (this=0x4398b48) at external/envoy/source/common/http/http1/codec_impl.cc:442
#14 0x0000000000744bbd in operator() (__closure=0x0, parser=) at external/envoy/source/common/http/http1/codec_impl.cc:294
#15 Envoy::Http::Http1::ConnectionImpl::<lambda(http_parser)>::_FUN(http_parser ) () at external/envoy/source/common/http/http1/codec_impl.cc:296
#16 0x0000000000747a9f in http_parser_execute ()
#17 0x00000000007427c2 in Envoy::Http::Http1::ConnectionImpl::dispatchSlice (this=this@entry=0x4398b48, slice=, len=) at external/envoy/source/common/http/http1/codec_impl.cc:378
#18 0x00000000007445b3 in Envoy::Http::Http1::ConnectionImpl::dispatch (this=0x4398b48, data=...) at external/envoy/source/common/http/http1/codec_impl.cc:363
#19 0x0000000000717988 in Envoy::Http::ConnectionManagerImpl::onData (this=0x156381c0, data=...) at external/envoy/source/common/http/conn_manager_impl.cc:230
#20 0x00000000005f30e7 in Envoy::Network::FilterManagerImpl::onContinueReading (this=this@entry=0x29ad8018, filter=filter@entry=0x0) at external/envoy/source/common/network/filter_manager_impl.cc:60
#21 0x00000000005f31bc in Envoy::Network::FilterManagerImpl::onRead (this=this@entry=0x29ad8018) at external/envoy/source/common/network/filter_manager_impl.cc:70
#22 0x00000000005f041f in onRead (read_buffer_size=205, this=0x29ad8000) at external/envoy/source/common/network/connection_impl.cc:263
#23 Envoy::Network::ConnectionImpl::onReadReady (this=this@entry=0x29ad8000) at external/envoy/source/common/network/connection_impl.cc:496
#24 0x00000000005f0c6e in Envoy::Network::ConnectionImpl::onFileEvent (this=0x29ad8000, events=3) at external/envoy/source/common/network/connection_impl.cc:472
#25 0x00000000005ea7f8 in operator() (__args#0=3, this=) at /usr/include/c++/5/functional:2267
#26 operator() (__closure=0x0, arg=, what=) at external/envoy/source/common/event/file_event_impl.cc:60
#27 Envoy::Event::FileEventImpl::<lambda(int, short int, void)>::_FUN(int, short, void ) () at external/envoy/source/common/event/file_event_impl.cc:61
#28 0x00000000008b9cef in event_persist_closure (ev=, base=0x2456dc0) at ../event.c:1580
#29 event_process_active_single_queue (base=base@entry=0x2456dc0, max_to_process=max_to_process@entry=2147483647, endtime=endtime@entry=0x0, activeq=) at ../event.c:1639
#30 0x00000000008ba41f in event_process_active (base=base@entry=0x2456dc0) at ../event.c:1738
#31 0x00000000008bd178 in event_base_loop (base=0x2456dc0, flags=) at ../event.c:1961
#32 0x00000000005e66b6 in Envoy::Server::WorkerImpl::threadRoutine (this=0x2edecc0, guard_dog=...) at external/envoy/source/server/worker_impl.cc:101
#33 0x00000000008cabe5 in Envoy::Thread::ThreadImpl::ThreadImpl(std::function<void ()>)::{lambda(void)#1}::_FUN(void*) () at /usr/include/c++/5/functional:2267
#34 0x00007f05abf1b184 in start_thread (arg=0x7f05a8c79700) at pthread_create.c:312
#35 0x00007f05ab94203d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
This is due to the usage of std:optional::value() to check whether an optional variable has a value instead of std::optional::has_value(). value() throws an exception if has_value() would return false, so I suspect the intention is what can be found in this PR.
Please let me know if I'm misunderstanding something.
Risk Level:
Low
Testing:
Existing UTs
The text was updated successfully, but these errors were encountered: