Skip to content

Commit 9979ce2

Browse files
authored
Fix race condition when accessing source info in action primitives (#1251)
Fixes #1250
1 parent 8e183a3 commit 9979ce2

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

include/bm/bm_sim/actions.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ class ActionPrimitive_ {
645645
// (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60056).
646646
static thread_local Packet *pkt;
647647
static thread_local PHV *phv;
648-
SourceInfo *call_source_info{nullptr};
648+
static thread_local SourceInfo *call_source_info;
649649

650650
P4Objects *get_p4objects() {
651651
return p4objects;

src/bm_sim/actions.cpp

+19-2
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,29 @@
2020
*/
2121

2222
#include <bm/bm_sim/actions.h>
23+
#include <bm/bm_sim/data.h>
2324
#include <bm/bm_sim/debugger.h>
25+
#include <bm/bm_sim/expressions.h>
2426
#include <bm/bm_sim/event_logger.h>
27+
#include <bm/bm_sim/header_unions.h>
28+
#include <bm/bm_sim/logger.h>
29+
#include <bm/bm_sim/named_p4object.h>
2530
#include <bm/bm_sim/P4Objects.h>
2631
#include <bm/bm_sim/packet.h>
27-
#include <bm/bm_sim/logger.h>
28-
32+
#include <bm/bm_sim/phv.h>
33+
#include <bm/bm_sim/phv_forward.h>
34+
#include <bm/bm_sim/stateful.h>
35+
#include <bm/bm_sim/source_info.h>
36+
37+
#include <cassert>
38+
#include <cstddef>
39+
#include <ios>
40+
#include <iostream>
41+
#include <istream>
42+
#include <memory>
43+
#include <ostream>
2944
#include <string>
45+
#include <utility>
3046
#include <vector>
3147

3248
#include "utils.h"
@@ -480,6 +496,7 @@ ActionFnEntry::deserialize(std::istream *in, const P4Objects &objs) {
480496

481497
thread_local Packet *ActionPrimitive_::pkt = nullptr;
482498
thread_local PHV *ActionPrimitive_::phv = nullptr;
499+
thread_local SourceInfo *ActionPrimitive_::call_source_info = nullptr;
483500

484501
// TODO(antonin): should this be moved to core/ ?
485502
namespace core {

0 commit comments

Comments
 (0)