mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
fix for needing to always flush optimization information for identifiers
This commit is contained in:
parent
501bf167c3
commit
71a1aa0afd
3 changed files with 34 additions and 5 deletions
|
@ -507,9 +507,6 @@ static void analyze_scripts_for_ZAM() {
|
|||
void clear_script_analysis() {
|
||||
IDOptInfo::ClearGlobalInitExprs();
|
||||
|
||||
// Keep the functions around if we're debugging, so we can
|
||||
// generate profiles.
|
||||
#ifndef DEBUG
|
||||
// We need to explicitly clear out the optimization information
|
||||
// associated with identifiers. They have reference loops with
|
||||
// the parent identifier that will prevent reclamation of the
|
||||
|
@ -519,8 +516,10 @@ void clear_script_analysis() {
|
|||
for ( auto& id : f.Scope()->OrderedVars() )
|
||||
id->ClearOptInfo();
|
||||
|
||||
funcs.clear();
|
||||
#endif
|
||||
// Keep the functions around if we're profiling, so we can loop
|
||||
// over them to generate the profiles.
|
||||
if ( ! analysis_options.profile_ZAM )
|
||||
funcs.clear();
|
||||
|
||||
non_recursive_funcs.clear();
|
||||
lambdas.clear();
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
expire, new, 42
|
28
testing/btest/language/spurious-table-expires.zeek
Normal file
28
testing/btest/language/spurious-table-expires.zeek
Normal file
|
@ -0,0 +1,28 @@
|
|||
# @TEST-EXEC: zeek -b -r $TRACES/wikipedia.trace %INPUT >out
|
||||
# @TEST-EXEC: btest-diff out
|
||||
|
||||
# Default timer expiration interval is very conservative (10sec) and never runs for short pcaps.
|
||||
redef table_expire_interval = 0.01sec;
|
||||
|
||||
function f(t: table[string] of count, k: string): interval
|
||||
{
|
||||
print "expire", k, t[k];
|
||||
return 0.0sec;
|
||||
}
|
||||
|
||||
global t: table[string] of count &create_expire=0.1sec &expire_func=f;
|
||||
|
||||
# Populate the initial table with two entries.
|
||||
event zeek_init() &priority=5
|
||||
{
|
||||
t["a"] = 10;
|
||||
t["b"] = 20;
|
||||
}
|
||||
|
||||
# Replace global t, deleting all entries. In a DEBUG build, table continued
|
||||
# to exist and its entries spuriously expired over time.
|
||||
event zeek_init()
|
||||
{
|
||||
t = table() &create_expire=0.1sec &expire_func=f;
|
||||
t["new"] = 42;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue