trafficserver icon indicating copy to clipboard operation
trafficserver copied to clipboard

In ja3_fingerprint plugin, protect against premature VConn closure.

Open ywkaras opened this issue 2 years ago • 4 comments

Cherry-pick Conflicts: plugins/experimental/ja3_fingerprint/ja3_fingerprint.cc

ywkaras avatar May 17 '22 17:05 ywkaras

This is going into Yahoo Prod first. Will undraft this after it soaks in prod for a while.

ywkaras avatar May 17 '22 17:05 ywkaras

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.

ywkaras avatar Aug 01 '22 17:08 ywkaras

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 )

ywkaras avatar Aug 03 '22 15:08 ywkaras

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.

github-actions[bot] avatar Dec 28 '22 01:12 github-actions[bot]