@@ -198,8 +198,9 @@ class GhostStackImpl {
198198 trampolines_installed_ = false ;
199199
200200 // Increment epoch to signal state change
201- uint64_t new_epoch = epoch_.fetch_add (1 , std::memory_order_release) + 1 ;
202- LOG_DEBUG (" New epoch=%lu (entries preserved for stale trampolines)\n " , (unsigned long )new_epoch);
201+ epoch_.fetch_add (1 , std::memory_order_release);
202+ LOG_DEBUG (" New epoch=%lu (entries preserved for stale trampolines)\n " ,
203+ (unsigned long )epoch_.load (std::memory_order_acquire));
203204 }
204205 LOG_DEBUG (" === reset EXIT ===\n " );
205206 }
@@ -240,8 +241,8 @@ class GhostStackImpl {
240241 (unsigned long )epoch_.load (std::memory_order_acquire));
241242
242243 // Increment epoch FIRST to signal any in-flight operations
243- uint64_t new_epoch = epoch_.fetch_add (1 , std::memory_order_release) + 1 ;
244- LOG_DEBUG (" New epoch=%lu\n " , (unsigned long )new_epoch );
244+ epoch_.fetch_add (1 , std::memory_order_release);
245+ LOG_DEBUG (" New epoch=%lu\n " , (unsigned long )epoch_. load (std::memory_order_acquire) );
245246
246247 entries_.clear ();
247248 tail_.store (0 , std::memory_order_release);
@@ -347,9 +348,8 @@ class GhostStackImpl {
347348 // Only update tail_ if we find a match - don't corrupt it during search
348349 for (size_t i = tail; i > 0 ; --i) {
349350 if (entries_[i - 1 ].stack_pointer == sp) {
350- size_t skipped = tail - (i - 1 );
351351 LOG_DEBUG (" longjmp detected: found matching SP at index %zu (skipped %zu frames)\n " ,
352- i - 1 , skipped );
352+ i - 1 , tail - (i - 1 ) );
353353
354354 // Update tail_ to skip all the frames that were bypassed by longjmp
355355 tail_.store (i - 1 , std::memory_order_release);
@@ -723,4 +723,4 @@ uintptr_t ghost_exception_handler(void* exception) {
723723 return ret;
724724}
725725
726- } // extern "C"
726+ } // extern
0 commit comments