projects
/
c11tester.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3a9f393
)
fix a bug in cds_func_exit
author
weiyu
<weiyuluo1232@gmail.com>
Fri, 12 Jul 2019 20:30:36 +0000
(13:30 -0700)
committer
weiyu
<weiyuluo1232@gmail.com>
Fri, 12 Jul 2019 20:30:36 +0000
(13:30 -0700)
cmodelint.cc
patch
|
blob
|
history
history.cc
patch
|
blob
|
history
diff --git
a/cmodelint.cc
b/cmodelint.cc
index 734a95428097b6b78773d60f3d462a42ef62db5d..82bf974f03b99b7aaae1ecd7b4fd440ed05f104f 100644
(file)
--- a/
cmodelint.cc
+++ b/
cmodelint.cc
@@
-395,5
+395,12
@@
void cds_func_exit(const char * funcName) {
ModelHistory *history = model->get_history();
func_id = history->getFuncMap()->get(funcName);
ModelHistory *history = model->get_history();
func_id = history->getFuncMap()->get(funcName);
+ /* func_id not found; this could happen in the case where a function calls cds_func_entry
+ * when the model has been defined yet, but then an atomic inside the function initializes
+ * the model. And then cds_func_exit is called upon the function exiting.
+ */
+ if (func_id == 0)
+ return;
+
history->exit_function(func_id, th->get_id());
}
history->exit_function(func_id, th->get_id());
}
diff --git
a/history.cc
b/history.cc
index 4ddba7b59ec6792237e0a46c57473ea92988dcac..caf86cedb46a46b2d72cc542c2598057d0b98fa2 100644
(file)
--- a/
history.cc
+++ b/
history.cc
@@
-46,6
+46,7
@@
void ModelHistory::enter_function(const uint32_t func_id, thread_id_t tid)
func_inst_lists->push_back( new func_inst_list_t() );
}
func_inst_lists->push_back( new func_inst_list_t() );
}
+/* @param func_id a non-zero value */
void ModelHistory::exit_function(const uint32_t func_id, thread_id_t tid)
{
uint32_t id = id_to_int(tid);
void ModelHistory::exit_function(const uint32_t func_id, thread_id_t tid)
{
uint32_t id = id_to_int(tid);