trafficserver
trafficserver copied to clipboard
In ja3_fingerprint plugin, protect against premature VConn closure.
Cherry-pick Conflicts: plugins/experimental/ja3_fingerprint/ja3_fingerprint.cc
This is going into Yahoo Prod first. Will undraft this after it soaks in prod for a while.
This has soaked in Yahoo Prod for a couple of weeks, no issues. It potentially eliminates some crashes, but I'm not 100% it does.
This is a stack dump for a type of crash that we were seeing in Yahoo prod, that I hope this change fixes:
[ 00 ] libc-2.17.so raise ( raise.c:55 )
[ 01 ] libc-2.17.so abort ( abort.c:90 )
[ 02 ] libstdc++.so.6.0.19 __gnu_cxx::__verbose_terminate_handler()
[ 03 ] libstdc++.so.6.0.19
[ 04 ] libstdc++.so.6.0.19
[ 05 ] libstdc++.so.6.0.19 __gxx_personality_v0
[ 06 ] libgcc_s-4.8.5-20150702.so.1
[ 07 ] libgcc_s-4.8.5-20150702.so.1 _Unwind_RaiseException
[ 08 ] libstdc++.so.6.0.19 __cxa_throw
[ 09 ] libstdc++.so.6.0.19 std::__throw_length_error(char const*)
[ 10 ] traffic_server std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) ( basic_string.tcc:1002 )
[ 11 ] traffic_server std::string::_M_mutate(unsigned long, unsigned long, unsigned long) ( basic_string.tcc:929 )
[ 12 ] traffic_server std::string::_M_leak_hard() ( basic_string.tcc:912 )
[ 13 ] ja3_fingerprint.so _M_leak ( basic_string.h:3338 )
[ 14 ] ja3_fingerprint.so data ( basic_string.h:5153 )
[ 15 ] ja3_fingerprint.so req_hdr_ja3_handler ( ja3_fingerprint.cc:393 )
[ 16 ] traffic_server INKContInternal::handle_event(int, void*) ( InkAPI.cc:1138 )
[ 17 ] traffic_server APIHook::invoke(int, void*) const ( I_Continuation.h:219 )
[ 18 ] traffic_server HttpSM::state_api_callout(int, void*) ( HttpSM.cc:1712 )
[ 19 ] traffic_server HttpSM::state_api_callback(int, void*) ( HttpSM.cc:1589 )
[ 20 ] traffic_server TSHttpTxnReenable ( InkAPI.cc:6300 )
[ 21 ] vz_connection.so http_hook ( INKPluginInit.cc:427 )
[ 22 ] traffic_server INKContInternal::handle_event(int, void*) ( InkAPI.cc:1138 )
[ 23 ] traffic_server APIHook::invoke(int, void*) const ( I_Continuation.h:219 )
[ 24 ] traffic_server HttpSM::state_api_callout(int, void*) ( HttpSM.cc:1712 )
[ 25 ] traffic_server HttpSM::state_api_callback(int, void*) ( HttpSM.cc:1589 )
[ 26 ] traffic_server TSHttpTxnReenable ( InkAPI.cc:6300 )
[ 27 ] libtscppapi.so.9.1.1 (anonymous namespace)::handleTransactionEvents(tsapi_cont*, TSEvent, void*) ( utils_internal.cc:111 )
[ 28 ] traffic_server INKContInternal::handle_event(int, void*) ( InkAPI.cc:1138 )
[ 29 ] traffic_server APIHook::invoke(int, void*) const ( I_Continuation.h:219 )
[ 30 ] traffic_server HttpSM::state_api_callout(int, void*) ( HttpSM.cc:1712 )
[ 31 ] traffic_server HttpSM::do_http_server_open(bool, bool) ( HttpSM.cc:5528 )
[ 32 ] traffic_server HttpSM::set_next_state() ( HttpSM.cc:8055 )
[ 33 ] traffic_server HttpSM::state_api_callout(int, void*) ( HttpSM.cc:1788 )
[ 34 ] traffic_server HttpSM::state_api_callback(int, void*) ( HttpSM.cc:1589 )
[ 35 ] traffic_server TSHttpTxnReenable ( InkAPI.cc:6300 )
[ 36 ] quick_filter.so (anonymous namespace)::cb(tsapi_cont*, TSEvent, void*) ( quick_filter.cc:680 )
[ 37 ] traffic_server INKContInternal::handle_event(int, void*) ( InkAPI.cc:1138 )
[ 38 ] traffic_server APIHook::invoke(int, void*) const ( I_Continuation.h:219 )
[ 39 ] traffic_server HttpSM::state_api_callout(int, void*) ( HttpSM.cc:1712 )
[ 40 ] traffic_server HttpSM::set_next_state() ( HttpSM.cc:7917 )
[ 41 ] traffic_server HttpSM::do_hostdb_lookup() ( HttpSM.cc:4750 )
[ 42 ] traffic_server HttpSM::set_next_state() ( HttpSM.cc:8203 )
[ 43 ] traffic_server HttpSM::state_api_callout(int, void*) ( HttpSM.cc:1788 )
[ 44 ] traffic_server HttpSM::state_api_callback(int, void*) ( HttpSM.cc:1589 )
[ 45 ] traffic_server TSHttpTxnReenable ( InkAPI.cc:6300 )
[ 46 ] regex_revalidate.so main_handler ( regex_revalidate.c:441 )
[ 47 ] traffic_server INKContInternal::handle_event(int, void*) ( InkAPI.cc:1138 )
[ 48 ] traffic_server APIHook::invoke(int, void*) const ( I_Continuation.h:219 )
[ 49 ] traffic_server HttpSM::state_api_callout(int, void*) ( HttpSM.cc:1712 )
[ 50 ] traffic_server HttpSM::state_api_callback(int, void*) ( HttpSM.cc:1589 )
[ 51 ] traffic_server TSHttpTxnReenable ( InkAPI.cc:6300 )
[ 52 ] carp.so carpLookup(tsapi_cont*, TSEvent, void*) ( carp.cc:776 )
[ 53 ] traffic_server INKContInternal::handle_event(int, void*) ( InkAPI.cc:1138 )
[ 54 ] traffic_server APIHook::invoke(int, void*) const ( I_Continuation.h:219 )
[ 55 ] traffic_server HttpSM::state_api_callout(int, void*) ( HttpSM.cc:1712 )
[ 56 ] traffic_server HttpSM::state_cache_open_read(int, void*) ( HttpSM.cc:2850 )
[ 57 ] traffic_server HttpSM::main_handler(int, void*) ( HttpSM.cc:2956 )
[ 58 ] traffic_server HttpCacheSM::state_cache_open_read(int, void*) ( I_Continuation.h:219 )
[ 59 ] traffic_server Cache::open_read(Continuation*, ats::CryptoHash const*, HTTPHdr*, OverridableHttpConfigParams const*, CacheFragType, char const*, int) ( CacheRead.cc:149 )
[ 60 ] traffic_server CacheProcessor::open_read(Continuation*, HttpCacheKey const*, HTTPHdr*, OverridableHttpConfigParams const*, long, CacheFragType) ( Cache.cc:3247 )
[ 61 ] traffic_server HttpCacheSM::do_cache_open_read(HttpCacheKey const&) ( HttpCacheSM.cc:279 )
[ 62 ] traffic_server HttpCacheSM::open_read(HttpCacheKey const*, URL*, HTTPHdr*, OverridableHttpConfigParams const*, long) ( HttpCacheSM.cc:314 )
[ 63 ] traffic_server HttpSM::do_cache_lookup_and_read() ( HttpSM.cc:5173 )
This pull request has been automatically marked as stale because it has not had recent activity. Marking it stale to flag it for further consideration by the community.