Skip to content

Make re-building __CPROVER_initialize safe #6576

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jan 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions doc/cprover-manual/properties.md
Original file line number Diff line number Diff line change
Expand Up @@ -412,3 +412,9 @@ those two options are used, CBMC will assume that `malloc` does not fail.
Malloc may also fail for external reasons which are not modelled by CProver. If
you want to replicate this behaviour use the option `--malloc-may-fail` in
conjunction with one of the above modes of failure.

These malloc failure options need to be set when the C library model is added to
the program. Typically this is upon invoking CBMC, but if the user has chosen to
do so via `goto-instrument --add-library`, then the malloc failure mode needs to
be specified with that `goto-instrument` invocation, i.e., as an option to
`goto-instrument`.
4 changes: 0 additions & 4 deletions jbmc/src/jbmc/jbmc_parse_options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -721,10 +721,6 @@ int jbmc_parse_optionst::get_goto_program(

goto_modelt &goto_model = dynamic_cast<goto_modelt &>(*goto_model_ptr);

// if we added the ansi-c library models here this should also call
// add_malloc_may_fail_variable_initializations(goto_model);
// here

if(cmdline.isset("validate-goto-model"))
{
goto_model.validate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 7, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 16, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 14, function calls: 2$
--
^warning: ignoring
2 changes: 1 addition & 1 deletion regression/goto-analyzer/constant_propagation_01/test.desc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 7, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 16, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 14, function calls: 2$
--
^warning: ignoring
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 8, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 15, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 13, function calls: 2$
--
^warning: ignoring
2 changes: 1 addition & 1 deletion regression/goto-analyzer/constant_propagation_02/test.desc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 8, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 15, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 13, function calls: 2$
--
^warning: ignoring
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 8, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 15, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 13, function calls: 2$
--
^warning: ignoring
2 changes: 1 addition & 1 deletion regression/goto-analyzer/constant_propagation_03/test.desc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 8, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 15, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 13, function calls: 2$
--
^warning: ignoring
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 8, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 15, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 13, function calls: 2$
--
^warning: ignoring
2 changes: 1 addition & 1 deletion regression/goto-analyzer/constant_propagation_04/test.desc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 8, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 15, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 0, assigns: 13, function calls: 2$
--
^warning: ignoring
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 3, assigns: 9, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 17, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 15, function calls: 2$
--
^warning: ignoring
2 changes: 1 addition & 1 deletion regression/goto-analyzer/constant_propagation_07/test.desc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 3, assigns: 9, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 17, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 15, function calls: 2$
--
^warning: ignoring
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 2, assigns: 8, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 3, assigns: 16, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 3, assigns: 14, function calls: 2$
--
^warning: ignoring
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 8, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 13, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 11, function calls: 2$
--
^warning: ignoring
2 changes: 1 addition & 1 deletion regression/goto-analyzer/constant_propagation_11/test.desc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 8, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 13, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 11, function calls: 2$
--
^warning: ignoring
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 7, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 14, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 12, function calls: 2$
--
^warning: ignoring
2 changes: 1 addition & 1 deletion regression/goto-analyzer/constant_propagation_12/test.desc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ main.c
^EXIT=0$
^SIGNAL=0$
^Simplified: assert: 1, assume: 0, goto: 1, assigns: 7, function calls: 0$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 14, function calls: 2$
^Unmodified: assert: 0, assume: 0, goto: 1, assigns: 12, function calls: 2$
--
^warning: ignoring
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ main.c
--variable-sensitivity --vsd-liveness --show
^EXIT=0$
^SIGNAL=0$
globalX .* 0 @ \[27\]
globalX .* 0 @ \[25\]
globalX .* 1 @ \[0\]
globalX .* 2 @ \[3\]
globalX .* TOP @ \[30\]
globalX .* TOP @ \[28\]
--
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ main.c
--variable-sensitivity --vsd-liveness --three-way-merge --show
^EXIT=0$
^SIGNAL=0$
globalX .* 0 @ \[27\]
globalX .* 0 @ \[25\]
globalX .* 1 @ \[0\]
globalX .* 2 @ \[3\]
globalX .* TOP @ \[30\]
globalX .* TOP @ \[28\]
--
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ main.c
--variable-sensitivity --show
^EXIT=0$
^SIGNAL=0$
globalX .* 0 @ \[27\]
globalX .* 0 @ \[25\]
globalX .* 1 @ \[0\]
globalX .* TOP @ \[0, 3\]
--
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ main.c
--variable-sensitivity --three-way-merge --show
^EXIT=0$
^SIGNAL=0$
globalX .* 0 @ \[27\]
globalX .* 0 @ \[25\]
globalX .* 1 @ \[0\]
globalX .* 2 @ \[3\]
--
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,30 @@ activate-multi-line-match
main#return_value \(\) -> TOP @ \[1\]
__CPROVER_dead_object \(\) -> TOP @ \[5\]
__CPROVER_deallocated \(\) -> TOP @ \[6\]
__CPROVER_malloc_is_new_array \(\) -> FALSE @ \[9\]
__CPROVER_memory_leak \(\) -> TOP @ \[11\]
__CPROVER_new_object \(\) -> TOP @ \[12\]
__CPROVER_next_thread_key \(\) -> 0ul @ \[14\]
__CPROVER_pipe_count \(\) -> 0u @ \[15\]
__CPROVER_rounding_mode \(\) -> 0 @ \[16\]
__CPROVER_thread_id \(\) -> 0ul @ \[17\]
__CPROVER_threads_exited \(\) -> TOP @ \[20\]
do_arrays::1::bool_ \(\) -> TOP @ \[22\]
do_arrays::1::bool_1 \(\) -> TOP @ \[23\]
do_arrays::1::bool_2 \(\) -> TOP @ \[24\]
do_arrays::1::x \(\) -> \{\[0\] = 10 @ \[26\]\n\} @ \[26\]
do_arrays::1::x \(\) -> \{\[0\] = 10 @ \[26\]\n\[1\] = 20 @ \[27\]\n\} @ \[27\]
do_arrays::1::x \(\) -> \{\[0\] = 30 @ \[28\]\n\[1\] = 20 @ \[27\]\n\} @ \[28\]
do_arrays::1::x \(\) -> \{\[0\] = 30 @ \[28\]\n\[1\] = 40 @ \[29\]\n\} @ \[29\]
do_arrays::1::x \(\) -> \{\[0\] = 30 @ \[28\]\n\[1\] = 30 @ \[30\]\n\} @ \[30\]
do_arrays::1::x \(\) -> \{\[0\] = 30 @ \[31\]\n\[1\] = 30 @ \[30\]\n\} @ \[31\]
do_arrays::1::x \(\) -> \{\[0\] = 5 @ \[32\]\n\[1\] = 30 @ \[30\]\n\} @ \[32\]
do_arrays::1::x \(\) -> \{\[0\] = 15 @ \[33\]\n\[1\] = 30 @ \[30\]\n\} @ \[33\]
do_arrays::1::x \(\) -> \{\[0\] = 15 @ \[33\]\n\[1\] = 10 @ \[34\]\n\} @ \[34\]
do_arrays::1::x \(\) -> \{\[0\] = 20 @ \[36\]\n\[1\] = 10 @ \[34\]\n\} @ \[36\]
do_arrays::1::x \(\) -> \{\[0\] = 20 @ \[36\, 38\]\n\[1\] = 10 @ \[34\]\n\} @ \[36\, 38\]
do_arrays::1::x \(\) -> \{\[0\] = 0 @ \[40]\n\[1\] = 10 @ \[34\]\n\} @ \[40\]
do_arrays::1::x \(\) -> \{\[0\] = 3 @ \[42]\n\[1\] = 10 @ \[34\]\n\} @ \[42\]
do_arrays::1::x \(\) -> \{\[0\] = TOP @ \[42\, 44]\n\[1\] = 10 @ \[34\]\n\} @ \[42\, 44\]
do_arrays::1::x \(\) -> \{\[0\] = TOP @ \[42\, 44\, 47]\n\[1\] = 10 @ \[49\]\n\} @ \[49\]
do_arrays::1::x \(\) -> \{\[0\] = 20 @ \[50]\n\[1\] = 10 @ \[49\]\n\} @ \[50\]
__CPROVER_malloc_is_new_array \(\) -> FALSE @ \[7\]
__CPROVER_memory_leak \(\) -> TOP @ \[9\]
__CPROVER_new_object \(\) -> TOP @ \[10\]
__CPROVER_next_thread_key \(\) -> 0ul @ \[12\]
__CPROVER_pipe_count \(\) -> 0u @ \[13\]
__CPROVER_rounding_mode \(\) -> 0 @ \[14\]
__CPROVER_thread_id \(\) -> 0ul @ \[15\]
__CPROVER_threads_exited \(\) -> TOP @ \[18\]
do_arrays::1::bool_ \(\) -> TOP @ \[20\]
do_arrays::1::bool_1 \(\) -> TOP @ \[21\]
do_arrays::1::bool_2 \(\) -> TOP @ \[22\]
do_arrays::1::x \(\) -> \{\[0\] = 10 @ \[24\]\n\} @ \[24\]
do_arrays::1::x \(\) -> \{\[0\] = 10 @ \[24\]\n\[1\] = 20 @ \[25\]\n\} @ \[25\]
do_arrays::1::x \(\) -> \{\[0\] = 30 @ \[26\]\n\[1\] = 20 @ \[25\]\n\} @ \[26\]
do_arrays::1::x \(\) -> \{\[0\] = 30 @ \[26\]\n\[1\] = 40 @ \[27\]\n\} @ \[27\]
do_arrays::1::x \(\) -> \{\[0\] = 30 @ \[26\]\n\[1\] = 30 @ \[28\]\n\} @ \[28\]
do_arrays::1::x \(\) -> \{\[0\] = 30 @ \[29\]\n\[1\] = 30 @ \[28\]\n\} @ \[29\]
do_arrays::1::x \(\) -> \{\[0\] = 5 @ \[30\]\n\[1\] = 30 @ \[28\]\n\} @ \[30\]
do_arrays::1::x \(\) -> \{\[0\] = 15 @ \[31\]\n\[1\] = 30 @ \[28\]\n\} @ \[31\]
do_arrays::1::x \(\) -> \{\[0\] = 15 @ \[31\]\n\[1\] = 10 @ \[32\]\n\} @ \[32\]
do_arrays::1::x \(\) -> \{\[0\] = 20 @ \[34\]\n\[1\] = 10 @ \[32\]\n\} @ \[34\]
do_arrays::1::x \(\) -> \{\[0\] = 20 @ \[34\, 36\]\n\[1\] = 10 @ \[32\]\n\} @ \[34\, 36\]
do_arrays::1::x \(\) -> \{\[0\] = 0 @ \[38]\n\[1\] = 10 @ \[32\]\n\} @ \[38\]
do_arrays::1::x \(\) -> \{\[0\] = 3 @ \[40]\n\[1\] = 10 @ \[32\]\n\} @ \[40\]
do_arrays::1::x \(\) -> \{\[0\] = TOP @ \[40\, 42]\n\[1\] = 10 @ \[32\]\n\} @ \[40\, 42\]
do_arrays::1::x \(\) -> \{\[0\] = TOP @ \[40\, 42\, 45]\n\[1\] = 10 @ \[47\]\n\} @ \[47\]
do_arrays::1::x \(\) -> \{\[0\] = 20 @ \[48]\n\[1\] = 10 @ \[47\]\n\} @ \[48\]
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,29 @@ activate-multi-line-match
main#return_value \(\) -> TOP @ \[1\]
__CPROVER_dead_object \(\) -> TOP @ \[5\]
__CPROVER_deallocated \(\) -> TOP @ \[6\]
__CPROVER_malloc_is_new_array \(\) -> FALSE @ \[9\]
__CPROVER_memory_leak \(\) -> TOP @ \[11\]
__CPROVER_new_object \(\) -> TOP @ \[12\]
__CPROVER_next_thread_key \(\) -> 0ul @ \[14\]
__CPROVER_pipe_count \(\) -> 0u @ \[15\]
__CPROVER_rounding_mode \(\) -> 0 @ \[16\]
__CPROVER_thread_id \(\) -> 0ul @ \[17\]
__CPROVER_threads_exited \(\) -> TOP @ \[20\]
do_pointers::1::bool_ \(\) -> TOP @ \[22\]
do_pointers::1::bool_1 \(\) -> TOP @ \[23\]
do_pointers::1::bool_2 \(\) -> TOP @ \[24\]
do_pointers::1::x \(\) -> TOP @ \[25\]
do_pointers::1::x \(\) -> 10 @ \[26\]
do_pointers::1::x_p \(\) -> TOP @ \[27\]
do_pointers::1::y \(\) -> TOP @ \[28\]
do_pointers::1::y \(\) -> 20 @ \[29\]
do_pointers::1::y_p \(\) -> TOP @ \[30\]
do_pointers::1::x_p \(\) -> ptr ->\(do_pointers::1::x\) @ \[31\]
do_pointers::1::x \(\) -> 30 @ \[32\]
do_pointers::1::x \(\) -> 40 @ \[33\]
do_pointers::1::x \(\) -> TOP @ \[34\]
do_pointers::1::x \(\) -> 50 @ \[35\]
do_pointers::1::y_p \(\) -> ptr ->\(do_pointers::1::x\) @ \[36\]
do_pointers::1::x \(\) -> 60 @ \[37\]
do_pointers::1::j \(\) -> TOP @ \[38\]
do_pointers::1::j \(\) -> 60 @ \[39\]
__CPROVER_malloc_is_new_array \(\) -> FALSE @ \[7\]
__CPROVER_memory_leak \(\) -> TOP @ \[9\]
__CPROVER_new_object \(\) -> TOP @ \[10\]
__CPROVER_next_thread_key \(\) -> 0ul @ \[12\]
__CPROVER_pipe_count \(\) -> 0u @ \[13\]
__CPROVER_rounding_mode \(\) -> 0 @ \[14\]
__CPROVER_thread_id \(\) -> 0ul @ \[15\]
__CPROVER_threads_exited \(\) -> TOP @ \[18\]
do_pointers::1::bool_ \(\) -> TOP @ \[20\]
do_pointers::1::bool_1 \(\) -> TOP @ \[21\]
do_pointers::1::bool_2 \(\) -> TOP @ \[22\]
do_pointers::1::x \(\) -> TOP @ \[23\]
do_pointers::1::x \(\) -> 10 @ \[24\]
do_pointers::1::x_p \(\) -> TOP @ \[25\]
do_pointers::1::y \(\) -> TOP @ \[26\]
do_pointers::1::y \(\) -> 20 @ \[27\]
do_pointers::1::y_p \(\) -> TOP @ \[28\]
do_pointers::1::x_p \(\) -> ptr ->\(do_pointers::1::x\) @ \[29\]
do_pointers::1::x \(\) -> 30 @ \[30\]
do_pointers::1::x \(\) -> 40 @ \[31\]
do_pointers::1::x \(\) -> TOP @ \[32\]
do_pointers::1::x \(\) -> 50 @ \[33\]
do_pointers::1::y_p \(\) -> ptr ->\(do_pointers::1::x\) @ \[34\]
do_pointers::1::x \(\) -> 60 @ \[35\]
do_pointers::1::j \(\) -> TOP @ \[36\]
do_pointers::1::j \(\) -> 60 @ \[37\]
Original file line number Diff line number Diff line change
Expand Up @@ -8,35 +8,35 @@ activate-multi-line-match
main#return_value \(\) -> TOP @ \[1\]
__CPROVER_dead_object \(\) -> TOP @ \[5\]
__CPROVER_deallocated \(\) -> TOP @ \[6\]
__CPROVER_malloc_is_new_array \(\) -> FALSE @ \[9\]
__CPROVER_memory_leak \(\) -> TOP @ \[11\]
__CPROVER_new_object \(\) -> TOP @ \[12\]
__CPROVER_next_thread_key \(\) -> 0ul @ \[14\]
__CPROVER_pipe_count \(\) -> 0u @ \[15\]
__CPROVER_rounding_mode \(\) -> 0 @ \[16\]
__CPROVER_thread_id \(\) -> 0ul @ \[17\]
__CPROVER_threads_exited \(\) -> TOP @ \[20\]
do_structs::1::bool_ \(\) -> TOP @ \[22\]
do_structs::1::bool_1 \(\) -> TOP @ \[23\]
do_structs::1::bool_2 \(\) -> TOP @ \[24\]
do_structs::1::st \(\) -> \{\} @ \[25\]
do_structs::1::st \(\) -> \{.x=10 @ \[26\]\} @ \[26\]
do_structs::1::st \(\) -> \{.x=10 @ \[26\]\, .y=20 @ \[27\]\} @ \[27\]
do_structs::1::st \(\) -> \{.x=30 @ \[28\]\, .y=20 @ \[27\]\} @ \[28\]
do_structs::1::st \(\) -> \{.x=30 @ \[28\]\, .y=40 @ \[29\]\} @ \[29\]
do_structs::1::st \(\) -> \{.x=30 @ \[28\]\, .y=30 @ \[30\]\} @ \[30\]
do_structs::1::st \(\) -> \{.x=30 @ \[31\]\, .y=30 @ \[30\]\} @ \[31\]
do_structs::1::st \(\) -> \{.x=5 @ \[32\]\, .y=30 @ \[30\]\} @ \[32\]
do_structs::1::st \(\) -> \{.x=15 @ \[33\]\, .y=30 @ \[30\]\} @ \[33\]
do_structs::1::st \(\) -> \{.x=15 @ \[33\]\, .y=10 @ \[34\]\} @ \[34\]
do_structs::1::st \(\) -> \{.x=20 @ \[36\]\, .y=10 @ \[34\]\} @ \[36\]
do_structs::1::st \(\) -> \{.x=20 @ \[36\, 38\]\, .y=10 @ \[34\]\} @ \[36\, 38\]
do_structs::1::st \(\) -> \{.x=0 @ \[40\]\, .y=10 @ \[34\]\} @ \[40\]
do_structs::1::st \(\) -> \{.x=3 @ \[42\]\, .y=10 @ \[34\]\} @ \[42\]
do_structs::1::st \(\) -> \{.x=TOP @ \[42\, 44\]\, .y=10 @ \[34\]\} @ \[42\, 44\]
do_structs::1::st \(\) -> \{.x=TOP @ \[42\, 44\, 47\]\, .y=10 @ \[34\]\} @ \[42\, 44\, 47\]
do_structs::1::st \(\) -> \{.x=TOP @ \[42\, 44\, 47\]\, .y=10 @ \[49\]\} @ \[49\]
do_structs::1::st \(\) -> \{.x=20 @ \[50\]\, .y=10 @ \[49\]\} @ \[50\]
do_structs::1::new_age \(\) -> \{\} @ \[51\]
do_structs::1::new_age \(\) -> \{.x=20 @ \[52\]\, .y=10 @ \[52\]\} @ \[52\]
__CPROVER_malloc_is_new_array \(\) -> FALSE @ \[7\]
__CPROVER_memory_leak \(\) -> TOP @ \[9\]
__CPROVER_new_object \(\) -> TOP @ \[10\]
__CPROVER_next_thread_key \(\) -> 0ul @ \[12\]
__CPROVER_pipe_count \(\) -> 0u @ \[13\]
__CPROVER_rounding_mode \(\) -> 0 @ \[14\]
__CPROVER_thread_id \(\) -> 0ul @ \[15\]
__CPROVER_threads_exited \(\) -> TOP @ \[18\]
do_structs::1::bool_ \(\) -> TOP @ \[20\]
do_structs::1::bool_1 \(\) -> TOP @ \[21\]
do_structs::1::bool_2 \(\) -> TOP @ \[22\]
do_structs::1::st \(\) -> \{\} @ \[23\]
do_structs::1::st \(\) -> \{.x=10 @ \[24\]\} @ \[24\]
do_structs::1::st \(\) -> \{.x=10 @ \[24\]\, .y=20 @ \[25\]\} @ \[25\]
do_structs::1::st \(\) -> \{.x=30 @ \[26\]\, .y=20 @ \[25\]\} @ \[26\]
do_structs::1::st \(\) -> \{.x=30 @ \[26\]\, .y=40 @ \[27\]\} @ \[27\]
do_structs::1::st \(\) -> \{.x=30 @ \[26\]\, .y=30 @ \[28\]\} @ \[28\]
do_structs::1::st \(\) -> \{.x=30 @ \[29\]\, .y=30 @ \[28\]\} @ \[29\]
do_structs::1::st \(\) -> \{.x=5 @ \[30\]\, .y=30 @ \[28\]\} @ \[30\]
do_structs::1::st \(\) -> \{.x=15 @ \[31\]\, .y=30 @ \[28\]\} @ \[31\]
do_structs::1::st \(\) -> \{.x=15 @ \[31\]\, .y=10 @ \[32\]\} @ \[32\]
do_structs::1::st \(\) -> \{.x=20 @ \[34\]\, .y=10 @ \[32\]\} @ \[34\]
do_structs::1::st \(\) -> \{.x=20 @ \[34\, 36\]\, .y=10 @ \[32\]\} @ \[34\, 36\]
do_structs::1::st \(\) -> \{.x=0 @ \[38\]\, .y=10 @ \[32\]\} @ \[38\]
do_structs::1::st \(\) -> \{.x=3 @ \[40\]\, .y=10 @ \[32\]\} @ \[40\]
do_structs::1::st \(\) -> \{.x=TOP @ \[40\, 42\]\, .y=10 @ \[32\]\} @ \[40\, 42\]
do_structs::1::st \(\) -> \{.x=TOP @ \[40\, 42\, 45\]\, .y=10 @ \[32\]\} @ \[40\, 42\, 45\]
do_structs::1::st \(\) -> \{.x=TOP @ \[40\, 42\, 45\]\, .y=10 @ \[47\]\} @ \[47\]
do_structs::1::st \(\) -> \{.x=20 @ \[48\]\, .y=10 @ \[47\]\} @ \[48\]
do_structs::1::new_age \(\) -> \{\} @ \[49\]
do_structs::1::new_age \(\) -> \{.x=20 @ \[50\]\, .y=10 @ \[50\]\} @ \[50\]
--
Loading