Open sim642 opened 1 year ago
The problem can be bypassed by using libc's malloc
instead of jemalloc.
Same versions as above, but with:
bear -- make MALLOC=libc
goblint -v compile_commands.json
This reaches a new parsing error:
The offending line is
rax *rax = rax_malloc(sizeof(*rax));
Here a previous typedef
has the same name as the local variable being defined, which is confusing the parser (https://github.com/goblint/cil/issues/114).
I ran this on 2cf50ddbad1b8169ed31c913d6e6c860e4736f80
.
rax
-> raxv
in rax.c
function raxNew
and stream
-> streamv
in module.c
function RM_RdbStreamCreateFromFile
.bear -- make MALLOC=libc redis-server
in src
, as there are also many main
functions.goblint --conf examples/large-program.json -v compile_commands.json
After this, Goblint was able to parse and analyze. However, on my computer, it got killed after roughly 4.5 hours:
runtime: 04:25:15.887
vars: 276649, evals: 3510071
|rho|=276649
|stable|=252845
|infl|=275370
|wpoint|=1088
|sides|=22793
|side_dep|=0
|side_infl|=0
|var_messages|=0
|rho_write|=0
|dep|=230145
|called|=80
Found 12713 contexts for 1375 functions. Top 5 functions:
1007 contexts for L:entry state of memcpy (1152689) on /usr/include/x86_64-linux-gnu/bits/string_fortified.h:25:1-31:1
723 contexts for L:entry state of vsnprintf (1152655) on /usr/include/x86_64-linux-gnu/bits/stdio2.h:81:1-87:1
386 contexts for L:entry state of dictAdd (8179) on dict.c:424:1-431:1
374 contexts for L:entry state of dictAddRaw (8186) on dict.c:451:1-461:1
374 contexts for L:entry state of dictFindPositionForInsert (8193) on dict.c:1452:1-1481:1
Memory statistics: total=49150542.55MB, max=6608.90MB, minor=49148338.11MB, major=1925292.69MB, promoted=1923088.26MB
minor collections=23436912 major collections=1773 compactions=0
Killed
https://github.com/redis/redis
Initial attempt
Goblint version: heads/master-0-ge223b4f36-dirty.
Checked out git tag
7.0.4
and executed:Crashes due to parsing error in vendored jemalloc:
For some reason we get some C++ wrapper as input as well.