├── .editorconfig
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── feature_request.md
│ └── other-issue.md
├── codecov.yml
├── pull_request_template.md
├── scripts
│ ├── covertool_combine
│ └── covertool_setup
└── workflows
│ ├── tests.yml
│ └── website.yml
├── .gitignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── Makefile
├── README.md
├── bin
└── .gitignore
├── cover
├── .gitignore
└── cover-report
├── doc
├── .gitignore
├── Gemfile
├── Makefile
└── overview.edoc
├── docs
├── .bundle
│ └── config
├── .gitignore
├── 404.md
├── CNAME
├── Gemfile
├── Gemfile.lock
├── Makefile
├── README.md
├── _config.yml
├── _config_local.yml
├── _data
│ ├── authors.yml
│ ├── navigation.yml
│ └── text.yml
├── _includes
│ ├── footer-custom.html
│ ├── head-custom.html
│ ├── masthead.html
│ └── yt.html
├── _posts
│ ├── 2013-09-03-site.md
│ ├── 2013-09-23-euc-2013.md
│ ├── 2014-06-02-poolboy-example.md
│ ├── 2014-06-03-poolboy-example-errors.md
│ ├── 2014-08-11-euc-2014.md
│ ├── 2015-06-10-euc-2015.md
│ ├── 2017-08-14-euc-2017-talk.md
│ ├── 2017-08-14-euc-2017-tutorial.md
│ ├── 2017-10-03-publications-update.md
│ ├── 2017-10-08-concuerror-eunit.md
│ ├── 2017-10-14-concuerring-concuerror-ep-1.md
│ ├── 2017-11-06-Announcing-Mailing-List.md
│ ├── 2018-07-15-hex.md
│ ├── 2020-10-10-tips.md
│ ├── 2020-10-17-code-beam-sf-2019.md
│ ├── 2020-10-17-functional-conf-2018.md
│ └── 2020-10-24-basic-tutorial.md
├── assets
│ └── pdf
│ │ ├── CodeBEAMSF2019.pdf
│ │ ├── ICST2013.pdf
│ │ └── iFM2017.pdf
├── contact.md
├── download.md
├── faq.md
├── feed.xml
├── images
│ ├── favicon.ico
│ └── site-logo.png
├── index.md
├── news.md
├── publications.md
├── search.md
├── sitemap.xml
└── tutorials.md
├── elvis.config
├── priv
├── concuerror
├── generate_option_docfiles
└── generate_version_hrl
├── rebar.config
├── rebar.lock
├── resources
├── DPOR_paper_material
│ ├── DPOR_README
│ ├── foo.erl
│ ├── foobar.erl
│ ├── my_test.erl
│ ├── run_dialyzer.sh
│ ├── run_filesystem.sh
│ ├── run_indexer.sh
│ ├── run_last_zero.sh
│ ├── run_readers.sh
│ └── run_rush_hour.sh
├── bash_completion
│ └── concuerror
├── erlang_questions
│ └── dets_bugs
│ │ ├── alt_dets_bugs.erl
│ │ └── dets_bugs.erl
├── flanagan.erl
├── how-to-release.md
├── old_include
│ ├── gen.hrl
│ ├── gui.hrl
│ └── instr.hrl
├── old_source
│ ├── LICENSE
│ ├── concuerror.erl
│ ├── concuerror_deps.erl
│ ├── concuerror_error.erl
│ ├── concuerror_gui.erl
│ ├── concuerror_instr.erl
│ ├── concuerror_io_server.erl
│ ├── concuerror_lid.erl
│ ├── concuerror_log.erl
│ ├── concuerror_proc_action.erl
│ ├── concuerror_rep.erl
│ ├── concuerror_sched.erl
│ ├── concuerror_state.erl
│ ├── concuerror_ticket.erl
│ └── concuerror_util.erl
├── perm_tests
│ ├── run_perm_tests
│ └── src
│ │ ├── complete_test_3.erl
│ │ ├── conditional_readers_3.erl
│ │ ├── depend_4_1.erl
│ │ ├── depend_4_2.erl
│ │ ├── depend_4_3.erl
│ │ ├── depend_6_1.erl
│ │ ├── depend_6_2.erl
│ │ ├── depend_6_3.erl
│ │ ├── depend_6_4.erl
│ │ ├── depend_6_5.erl
│ │ ├── etsi.erl
│ │ ├── readers_2.erl
│ │ └── readers_3.erl
├── syntax
│ ├── block_after.erl
│ ├── non_local_pat.erl
│ ├── rec_uscore.erl
│ └── strip_attr.erl
├── tdd
│ ├── reg_server.erl
│ ├── reg_server.hrl
│ └── reg_server_tests.erl
└── utest
│ ├── concuerror_error_tests.erl
│ ├── concuerror_instr_tests.erl
│ ├── concuerror_lid_tests.erl
│ ├── concuerror_state_tests.erl
│ └── concuerror_ticket_tests.erl
├── src
├── .gitignore
├── concuerror.app.src
├── concuerror.erl
├── concuerror.hrl
├── concuerror_callback.erl
├── concuerror_dependencies.erl
├── concuerror_estimator.erl
├── concuerror_inspect.erl
├── concuerror_instrumenter.erl
├── concuerror_io_lib.erl
├── concuerror_loader.erl
├── concuerror_logger.erl
├── concuerror_options.erl
├── concuerror_scheduler.erl
└── concuerror_window_average.erl
├── test
├── README.md
├── concuerror_logger_tests.erl
└── concuerror_options_tests.erl
├── tests-real
├── Makefile
├── README.md
└── suites
│ ├── check_version.escript
│ ├── erlang-litmus
│ ├── .gitignore
│ ├── Makefile
│ ├── run_litmus.escript
│ └── test
│ ├── gproc
│ ├── .gitignore
│ ├── Makefile
│ ├── ref
│ │ ├── t_reg_or_locate2.out
│ │ ├── t_simple_reg.out
│ │ ├── t_simple_reg_or_locate.out
│ │ ├── test3.out
│ │ └── test4.out
│ ├── test
│ └── test.erl
│ ├── makefile
│ ├── Makefile
│ ├── footer
│ ├── header
│ └── makefile-tests
│ ├── options
│ ├── .gitignore
│ ├── Makefile
│ ├── autocomplete-tests
│ ├── autocomplete
│ │ ├── autocomplete.sh
│ │ ├── autocomplete_common.erl
│ │ ├── autocomplete_help.erl
│ │ ├── autocomplete_long.erl
│ │ └── autocomplete_short.erl
│ ├── footer
│ ├── header
│ ├── option1-tests
│ ├── option2-tests
│ ├── option3-tests
│ ├── other-tests
│ └── src
│ │ ├── bad.erl
│ │ ├── bad_attribute.erl
│ │ ├── bad_attribute_1.erl
│ │ ├── bad_attribute_2.erl
│ │ ├── bad_attribute_3.erl
│ │ ├── bad_attribute_4.erl
│ │ ├── bad_attribute_5.erl
│ │ ├── debug_works.erl
│ │ ├── eunit_sample.erl
│ │ ├── excluded.erl
│ │ ├── excluding.erl
│ │ ├── first_and_other_deadlock.erl
│ │ ├── foo.erl
│ │ ├── from_shell.erl
│ │ ├── load_nif.erl
│ │ ├── other_deadlock.erl
│ │ └── six.erl
│ ├── output
│ ├── Makefile
│ ├── footer
│ ├── header
│ ├── output-tests
│ ├── ref
│ │ └── graph.dot
│ └── src
│ │ ├── a_fun.erl
│ │ ├── buggy.erl
│ │ ├── deadlock.erl
│ │ ├── fig3.1-ext.erl
│ │ ├── harmless_exit.erl
│ │ ├── many_scheds.erl
│ │ ├── more_stacktrace.erl
│ │ ├── race_info.erl
│ │ ├── register.erl
│ │ └── stacktrace.erl
│ ├── poolboy
│ ├── .gitignore
│ ├── Makefile
│ └── test
│ └── print_colors
└── tests
├── README.md
├── differ
├── results
└── .gitignore
├── runtests.py
├── scenarios.erl
├── suites
├── advanced_tests
│ ├── results
│ │ ├── gen_server_bug-test_register-inf-dpor.txt
│ │ ├── gen_server_bug-test_without_register-inf-dpor.txt
│ │ ├── manolis-test_2workers_small-inf-dpor.txt
│ │ ├── percept-test-inf-dpor.txt
│ │ ├── preemption-preemption-inf-dpor.txt
│ │ ├── receive_deps-test-inf-dpor.txt
│ │ ├── receive_deps_kill-test-inf-dpor.txt
│ │ ├── receive_pats-test1-inf-dpor.txt
│ │ ├── receive_pats-test2-inf-dpor.txt
│ │ ├── receive_pats-test3-inf-dpor.txt
│ │ ├── receive_pats-test4-inf-dpor.txt
│ │ ├── receive_patterns-test1-inf-optimal.txt
│ │ ├── receive_patterns-test2-inf-optimal.txt
│ │ ├── ring_leader_election-ring_leader_election-inf-dpor.txt
│ │ ├── ring_leader_election_barrier-ring_leader_election_barrier-inf-dpor.txt
│ │ ├── ring_leader_election_symmetric-ring_leader_election_symmetric-inf-dpor.txt
│ │ ├── ring_leader_election_symmetric_buffer-ring_leader_election_symmetric_buffer-inf-dpor.txt
│ │ ├── ring_leader_election_symmetric_buffer_2-ring_leader_election_symmetric_buffer_2-inf-dpor.txt
│ │ ├── shared_ptr-shared_ptr-inf-dpor.txt
│ │ ├── shootout-test1-inf-dpor.txt
│ │ ├── simple_registry-simple_registry-inf-dpor.txt
│ │ ├── source_killer-test-inf-dpor.txt
│ │ ├── source_killer-test-inf-source.txt
│ │ └── vjeko_peer-concuerror_test-inf-dpor.txt
│ └── src
│ │ ├── gen_server_bug.erl
│ │ ├── indexer_example.erl
│ │ ├── manolis
│ │ ├── good_testcase.txt
│ │ ├── readme.txt
│ │ ├── rush_hour.erl
│ │ ├── search.erl
│ │ └── test.erl
│ │ ├── percept.erl
│ │ ├── preemption.erl
│ │ ├── receive_deps.erl
│ │ ├── receive_deps_kill.erl
│ │ ├── receive_pats.erl
│ │ ├── receive_patterns.erl
│ │ ├── ring_leader_election.erl
│ │ ├── ring_leader_election_barrier.erl
│ │ ├── ring_leader_election_symmetric.erl
│ │ ├── ring_leader_election_symmetric_buffer.erl
│ │ ├── ring_leader_election_symmetric_buffer_2.erl
│ │ ├── send_order.erl
│ │ ├── shared_ptr.erl
│ │ ├── shootout
│ │ ├── pidigits.erl
│ │ ├── test.erl
│ │ └── thread_ring.erl
│ │ ├── simple_registry.erl
│ │ ├── source_killer.erl
│ │ └── vjeko_peer.erl
├── basic_tests
│ ├── results
│ │ ├── ac_tab_insert-test-inf-optimal.txt
│ │ ├── after_test_2-after_test_2-inf-dpor.txt
│ │ ├── after_test_3-after_test_3-inf-dpor.txt
│ │ ├── after_vs_trap_exit-after_vs_trap_exit-inf-dpor.txt
│ │ ├── allow_first_crash-test-inf-dpor.txt
│ │ ├── assert_filter-test-inf-dpor.txt
│ │ ├── bad_dictionary-bad_erase-inf-optimal.txt
│ │ ├── bad_dictionary-bad_get-inf-optimal.txt
│ │ ├── bad_dictionary-bad_put-inf-optimal.txt
│ │ ├── bad_whereis-test-inf-dpor.txt
│ │ ├── code_when_undef-test-inf-optimal.txt
│ │ ├── concuerror_crash-test-inf-dpor.txt
│ │ ├── curious_builtins-test1-inf-dpor.txt
│ │ ├── curious_builtins-test2-inf-dpor.txt
│ │ ├── curious_builtins-test3-inf-dpor.txt
│ │ ├── dead_receive-dead_receive-inf-dpor.txt
│ │ ├── deeper_exit-test-inf-dpor.txt
│ │ ├── demonitor_exhaustive-child_both-inf-dpor.txt
│ │ ├── demonitor_exhaustive-child_flush-inf-dpor.txt
│ │ ├── demonitor_exhaustive-child_info-inf-dpor.txt
│ │ ├── demonitor_exhaustive-child_none-inf-dpor.txt
│ │ ├── demonitor_exhaustive-parent_both-inf-dpor.txt
│ │ ├── demonitor_exhaustive-parent_flush-inf-dpor.txt
│ │ ├── demonitor_exhaustive-parent_info-inf-dpor.txt
│ │ ├── demonitor_exhaustive-parent_none-inf-dpor.txt
│ │ ├── demonitor_flush-test1-inf-dpor.txt
│ │ ├── demonitor_flush-test2-inf-dpor.txt
│ │ ├── demonitor_flush-test3-inf-dpor.txt
│ │ ├── demonitor_flush-test4-inf-dpor.txt
│ │ ├── demonitor_flush-test5-inf-dpor.txt
│ │ ├── demonitor_flush-test6-inf-dpor.txt
│ │ ├── demonitor_sane_opts-test1-inf-dpor.txt
│ │ ├── demonitor_sane_opts-test2-inf-dpor.txt
│ │ ├── demonitor_sane_opts-test3-inf-dpor.txt
│ │ ├── depth_bound-test-inf-dpor.txt
│ │ ├── erlang_display-test-inf-dpor.txt
│ │ ├── erlang_display_string-test-inf-dpor.txt
│ │ ├── ets_delete-ets_delete-inf-dpor.txt
│ │ ├── ets_delete-ets_delete_bad-inf-dpor.txt
│ │ ├── ets_delete-ets_delete_plain-inf-dpor.txt
│ │ ├── ets_delete_2-ets_delete_2-inf-dpor.txt
│ │ ├── ets_delete_2-ets_delete_2_twice-inf-dpor.txt
│ │ ├── ets_delete_all-delete_all_bad-inf-optimal.txt
│ │ ├── ets_delete_all-delete_all_good-inf-optimal.txt
│ │ ├── ets_delete_all-race_delete_all_read-inf-optimal.txt
│ │ ├── ets_delete_all-race_delete_all_write-inf-optimal.txt
│ │ ├── ets_delete_object-test1-inf-dpor.txt
│ │ ├── ets_delete_object-test2-inf-dpor.txt
│ │ ├── ets_delete_object-test3-inf-dpor.txt
│ │ ├── ets_exceptions-test-inf-dpor.txt
│ │ ├── ets_give_away-give_away_bad-inf-optimal.txt
│ │ ├── ets_give_away-give_away_good-inf-optimal.txt
│ │ ├── ets_global_global-new_delete-inf-optimal.txt
│ │ ├── ets_global_global-new_exit-inf-optimal.txt
│ │ ├── ets_global_global-new_new-inf-optimal.txt
│ │ ├── ets_global_global-new_rename_free-inf-optimal.txt
│ │ ├── ets_global_global-new_rename_taken-inf-optimal.txt
│ │ ├── ets_global_global-rename_delete-inf-optimal.txt
│ │ ├── ets_global_global-rename_exit-inf-optimal.txt
│ │ ├── ets_global_global-rename_rename_free-inf-optimal.txt
│ │ ├── ets_global_global-rename_rename_taken-inf-optimal.txt
│ │ ├── ets_heir-ets_heir-inf-dpor.txt
│ │ ├── ets_heir-test-inf-dpor.txt
│ │ ├── ets_heir-test1-inf-dpor.txt
│ │ ├── ets_heir-test2-inf-dpor.txt
│ │ ├── ets_heir_2-ets_heir_2-inf-dpor.txt
│ │ ├── ets_info-info_2_badarg-inf-optimal.txt
│ │ ├── ets_info-info_bad-inf-optimal.txt
│ │ ├── ets_info-info_badarg-inf-optimal.txt
│ │ ├── ets_info-info_good-inf-optimal.txt
│ │ ├── ets_info-info_system-inf-optimal.txt
│ │ ├── ets_info_details-test-inf-optimal.txt
│ │ ├── ets_insert_new-test-inf-dpor.txt
│ │ ├── ets_insert_objects-ets_insert_objects-inf-dpor.txt
│ │ ├── ets_many_insert_new-ets_many_insert_new-inf-dpor.txt
│ │ ├── ets_new-test-inf-dpor.txt
│ │ ├── ets_new-test-inf.txt
│ │ ├── ets_new_failure-ets_new_failure-inf-dpor.txt
│ │ ├── ets_new_failure_2-ets_new_failure_2-inf-dpor.txt
│ │ ├── ets_new_failure_3-ets_new_failure_3-inf-dpor.txt
│ │ ├── ets_ref_keys-ets_ref_keys-0.txt
│ │ ├── ets_ref_keys-ets_ref_keys-inf-dpor.txt
│ │ ├── ets_rename-rename_bad-inf-optimal.txt
│ │ ├── ets_rename-rename_good-inf-optimal.txt
│ │ ├── ets_rename-rename_public-inf-optimal.txt
│ │ ├── ets_select-match_against_different_keys-inf-dpor.txt
│ │ ├── ets_select-match_against_different_matchspec-inf-dpor.txt
│ │ ├── ets_select-match_against_different_tuples-inf-dpor.txt
│ │ ├── ets_select-match_against_matching_keys-inf-dpor.txt
│ │ ├── ets_select-match_against_matching_matchspec-inf-dpor.txt
│ │ ├── ets_select-match_against_matching_tuples-inf-dpor.txt
│ │ ├── ets_select-match_object_against_different_keys-inf-dpor.txt
│ │ ├── ets_select-match_object_against_different_matchspec-inf-dpor.txt
│ │ ├── ets_select-match_object_against_different_tuples-inf-dpor.txt
│ │ ├── ets_select-match_object_against_matching_keys-inf-dpor.txt
│ │ ├── ets_select-match_object_against_matching_matchspec-inf-dpor.txt
│ │ ├── ets_select-match_object_against_matching_tuples-inf-dpor.txt
│ │ ├── ets_select-select_against_different_keys-inf-dpor.txt
│ │ ├── ets_select-select_against_different_matchspec-inf-dpor.txt
│ │ ├── ets_select-select_against_different_tuples-inf-dpor.txt
│ │ ├── ets_select-select_against_matching_keys-inf-dpor.txt
│ │ ├── ets_select-select_against_matching_matchspec-inf-dpor.txt
│ │ ├── ets_select-select_against_matching_tuples-inf-dpor.txt
│ │ ├── ets_select-select_delete_against_different_any-inf-dpor.txt
│ │ ├── ets_select-select_delete_against_different_keys-inf-dpor.txt
│ │ ├── ets_select-select_delete_against_different_matchspec-inf-dpor.txt
│ │ ├── ets_select-select_delete_against_different_tuples-inf-dpor.txt
│ │ ├── ets_select-select_delete_against_matching_any-inf-dpor.txt
│ │ ├── ets_select-select_delete_against_matching_keys-inf-dpor.txt
│ │ ├── ets_select-select_delete_against_matching_matchspec-inf-dpor.txt
│ │ ├── ets_select-select_delete_against_matching_tuples-inf-dpor.txt
│ │ ├── ets_unguarded-test-inf-optimal.txt
│ │ ├── ets_unnamed-test1-inf-dpor.txt
│ │ ├── ets_unnamed-test2-inf-dpor.txt
│ │ ├── ets_unnamed-test3-inf-dpor.txt
│ │ ├── ets_update_counter-test-inf-dpor.txt
│ │ ├── ets_update_counter-test1-inf-dpor.txt
│ │ ├── ets_update_element-race_update_element_r-inf-optimal.txt
│ │ ├── ets_update_element-race_update_element_w-inf-optimal.txt
│ │ ├── ets_update_element-update_element_bad-inf-optimal.txt
│ │ ├── ets_update_element-update_element_good-inf-optimal.txt
│ │ ├── ets_whereis-race_whereis_r-inf-optimal.txt
│ │ ├── ets_whereis-race_whereis_w-inf-optimal.txt
│ │ ├── ets_whereis-whereis_bad-inf-optimal.txt
│ │ ├── ets_whereis-whereis_badarg-inf-optimal.txt
│ │ ├── ets_whereis-whereis_good-inf-optimal.txt
│ │ ├── ets_whereis-whereis_race_del-inf-optimal.txt
│ │ ├── ets_whereis-whereis_race_exit-inf-optimal.txt
│ │ ├── ets_whereis-whereis_race_wr-inf-optimal.txt
│ │ ├── ets_whereis-whereis_race_ww-inf-optimal.txt
│ │ ├── ets_whereis-whereis_system-inf-optimal.txt
│ │ ├── exit-test1-inf-dpor.txt
│ │ ├── exit-test1-inf.txt
│ │ ├── exit-test2-inf-dpor.txt
│ │ ├── exit-test2-inf.txt
│ │ ├── exit-test3-inf-dpor.txt
│ │ ├── exit-test3-inf.txt
│ │ ├── exit-test4-inf-dpor.txt
│ │ ├── exit-test5-inf-dpor.txt
│ │ ├── exit-test6-inf-dpor.txt
│ │ ├── exit_kill-test-inf-dpor.txt
│ │ ├── exit_message_unpredicted-exit_message_unpredicted-inf-dpor.txt
│ │ ├── file_read_file-test-inf-dpor.txt
│ │ ├── fun_fail-test1-inf-dpor.txt
│ │ ├── fun_fail-test2-inf-dpor.txt
│ │ ├── fun_fail-test3-inf-dpor.txt
│ │ ├── group_leader-test-inf-dpor.txt
│ │ ├── group_leader-test1-inf-dpor.txt
│ │ ├── group_leader2-test-inf-dpor.txt
│ │ ├── group_leader3-test-inf-dpor.txt
│ │ ├── halt_error-test1-inf-optimal.txt
│ │ ├── halt_error-test2-inf-optimal.txt
│ │ ├── hibernate-test-inf-optimal.txt
│ │ ├── hopeless_after-hopeless_after-inf-dpor.txt
│ │ ├── i_hate_myself-i_hate_myself-inf-dpor.txt
│ │ ├── ignore_error_1-test-inf-dpor.txt
│ │ ├── ignore_error_2-test-inf-dpor.txt
│ │ ├── ignore_error_3-test-inf-dpor.txt
│ │ ├── immediate_delivery-test1-inf-dpor.txt
│ │ ├── immediate_delivery-test2-inf-dpor.txt
│ │ ├── immediate_delivery-test3-inf-dpor.txt
│ │ ├── init_race_condition-test-inf-dpor.txt
│ │ ├── init_race_condition-test-inf.txt
│ │ ├── inspect_system-test-inf-dpor.txt
│ │ ├── instr_apply-test-inf-dpor.txt
│ │ ├── instr_apply-test-inf.txt
│ │ ├── io_error-test-inf-dpor.txt
│ │ ├── io_format-test-inf-dpor.txt
│ │ ├── io_format_2-test-inf-dpor.txt
│ │ ├── io_format_3-test-inf-dpor.txt
│ │ ├── irrelevant_send-irrelevant_send-inf-dpor.txt
│ │ ├── is_process_alive_1-is_process_alive_1-inf-dpor.txt
│ │ ├── keep_going-test-inf-dpor.txt
│ │ ├── kill_running_waiting-test-inf-dpor.txt
│ │ ├── late_hope-late_hope-inf-dpor.txt
│ │ ├── lid_test-test-inf-dpor.txt
│ │ ├── link_after-link_after-inf-dpor.txt
│ │ ├── load_before_start-test-inf-dpor.txt
│ │ ├── main_and_backup-main_and_backup-inf-dpor.txt
│ │ ├── many_kill-test-inf-dpor.txt
│ │ ├── many_links-many_links-inf-dpor.txt
│ │ ├── many_monitors-many_monitors-inf-dpor.txt
│ │ ├── many_send_to_dead-many_send_to_dead-inf-dpor.txt
│ │ ├── many_send_to_dead_2-many_send_to_dead_2-inf-dpor.txt
│ │ ├── message_queue_length-test-inf-optimal.txt
│ │ ├── messed_deliveries-test-inf-dpor.txt
│ │ ├── module_loaded_dep-test-inf-optimal.txt
│ │ ├── monitor_demonitor-monitor_demonitor-inf-dpor.txt
│ │ ├── monitor_failure-monitor_failure-inf-dpor.txt
│ │ ├── monitor_info-test1-inf-dpor.txt
│ │ ├── monitor_info-test2-inf-dpor.txt
│ │ ├── monitor_missing_messages-monitor_missing_messages-inf-dpor.txt
│ │ ├── monitor_named-test-inf-dpor.txt
│ │ ├── monitor_order-test-inf-optimal.txt
│ │ ├── monotonic_time-test-inf-optimal.txt
│ │ ├── node_names-test1-inf-dpor.txt
│ │ ├── node_names-test2-inf-dpor.txt
│ │ ├── normal_exit-normal_exit-inf-dpor.txt
│ │ ├── normal_shutdown-test-inf-dpor.txt
│ │ ├── normal_tuple_exit-test-inf-dpor.txt
│ │ ├── os_timestamp-test-inf-dpor.txt
│ │ ├── pids_are_unsafe-test-inf-dpor.txt
│ │ ├── process_flag_link-process_flag_link-inf-dpor.txt
│ │ ├── process_info-test1-inf-dpor.txt
│ │ ├── process_info-test2-inf-dpor.txt
│ │ ├── process_info-test3-inf-dpor.txt
│ │ ├── process_info-test_current_function-inf-dpor.txt
│ │ ├── process_info-test_current_function_top-inf-dpor.txt
│ │ ├── process_info-test_message_queue_len-inf-dpor.txt
│ │ ├── process_info-test_messages-inf-dpor.txt
│ │ ├── process_info-test_mql_flush-inf-dpor.txt
│ │ ├── processes-test1-inf-dpor.txt
│ │ ├── processes-test2-inf-dpor.txt
│ │ ├── processes_leader-test-inf-optimal.txt
│ │ ├── racing_after-test-inf-dpor.txt
│ │ ├── receive_after-receive_after-inf-dpor.txt
│ │ ├── receive_and_after-receive_and_after-inf-dpor.txt
│ │ ├── receive_catchall-test1-inf-dpor.txt
│ │ ├── receive_catchall-test2-inf-dpor.txt
│ │ ├── receive_catchall-test3-inf-dpor.txt
│ │ ├── receive_exit-test-inf-dpor.txt
│ │ ├── receive_exit-test1-inf-dpor.txt
│ │ ├── receive_exit-test2-inf-dpor.txt
│ │ ├── receive_exit-test3-inf-dpor.txt
│ │ ├── receive_with_guard-receive_with_guard-inf-dpor.txt
│ │ ├── receive_without_trapping-receive_without_trapping-inf-dpor.txt
│ │ ├── register_link-test-inf-optimal.txt
│ │ ├── registered_1-registered_1-inf-dpor.txt
│ │ ├── registered_2-registered_2-inf-dpor.txt
│ │ ├── registered_send_1-registered_send_1-inf-dpor.txt
│ │ ├── registered_send_2-registered_send_2-inf-dpor.txt
│ │ ├── registered_send_3-registered_send_3-inf-dpor.txt
│ │ ├── replay_sanity-replay_sanity-inf-dpor.txt
│ │ ├── report_blocks-test-inf-dpor.txt
│ │ ├── reuse_raw_pid-test-inf-dpor.txt
│ │ ├── safeops_coverage-test-inf-optimal.txt
│ │ ├── sched_tests-test_3_proc_receive_exit-0-dpor.txt
│ │ ├── sched_tests-test_3_proc_receive_exit-0.txt
│ │ ├── sched_tests-test_3_proc_receive_exit-1-dpor.txt
│ │ ├── sched_tests-test_3_proc_receive_exit-1.txt
│ │ ├── sched_tests-test_3_proc_receive_exit-2-dpor.txt
│ │ ├── sched_tests-test_3_proc_receive_exit-2.txt
│ │ ├── sched_tests-test_3_proc_receive_exit-inf-dpor.txt
│ │ ├── sched_tests-test_3_proc_receive_exit-inf.txt
│ │ ├── sched_tests-test_3_proc_send_receive-0-dpor.txt
│ │ ├── sched_tests-test_3_proc_send_receive-0.txt
│ │ ├── sched_tests-test_3_proc_send_receive-1-dpor.txt
│ │ ├── sched_tests-test_3_proc_send_receive-1.txt
│ │ ├── sched_tests-test_3_proc_send_receive-2-dpor.txt
│ │ ├── sched_tests-test_3_proc_send_receive-2.txt
│ │ ├── sched_tests-test_3_proc_send_receive-3-dpor.txt
│ │ ├── sched_tests-test_3_proc_send_receive-3.txt
│ │ ├── sched_tests-test_3_proc_send_receive-4-dpor.txt
│ │ ├── sched_tests-test_3_proc_send_receive-4.txt
│ │ ├── sched_tests-test_3_proc_send_receive-5-dpor.txt
│ │ ├── sched_tests-test_3_proc_send_receive-5.txt
│ │ ├── sched_tests-test_3_proc_send_receive-6-dpor.txt
│ │ ├── sched_tests-test_3_proc_send_receive-6.txt
│ │ ├── sched_tests-test_3_proc_send_receive-7-dpor.txt
│ │ ├── sched_tests-test_3_proc_send_receive-7.txt
│ │ ├── sched_tests-test_3_proc_send_receive-inf-dpor.txt
│ │ ├── sched_tests-test_3_proc_send_receive-inf.txt
│ │ ├── sched_tests-test_after_clause_preemption-0-dpor.txt
│ │ ├── sched_tests-test_after_clause_preemption-0.txt
│ │ ├── sched_tests-test_after_clause_preemption-1-dpor.txt
│ │ ├── sched_tests-test_after_clause_preemption-1.txt
│ │ ├── sched_tests-test_after_clause_preemption-2-dpor.txt
│ │ ├── sched_tests-test_after_clause_preemption-2.txt
│ │ ├── sched_tests-test_after_clause_preemption-3-dpor.txt
│ │ ├── sched_tests-test_after_clause_preemption-3.txt
│ │ ├── sched_tests-test_after_clause_preemption-inf-dpor.txt
│ │ ├── sched_tests-test_after_clause_preemption-inf.txt
│ │ ├── sched_tests-test_halt_0-0-dpor.txt
│ │ ├── sched_tests-test_halt_0-0.txt
│ │ ├── sched_tests-test_halt_0-inf-dpor.txt
│ │ ├── sched_tests-test_halt_0-inf.txt
│ │ ├── sched_tests-test_halt_1-0-dpor.txt
│ │ ├── sched_tests-test_halt_1-0.txt
│ │ ├── sched_tests-test_halt_1-inf-dpor.txt
│ │ ├── sched_tests-test_halt_1-inf.txt
│ │ ├── sched_tests-test_link_receive_exit-0-dpor.txt
│ │ ├── sched_tests-test_link_receive_exit-0.txt
│ │ ├── sched_tests-test_link_receive_exit-1-dpor.txt
│ │ ├── sched_tests-test_link_receive_exit-1.txt
│ │ ├── sched_tests-test_link_receive_exit-inf-dpor.txt
│ │ ├── sched_tests-test_link_receive_exit-inf.txt
│ │ ├── sched_tests-test_link_unlink-0-dpor.txt
│ │ ├── sched_tests-test_link_unlink-0.txt
│ │ ├── sched_tests-test_link_unlink-1-dpor.txt
│ │ ├── sched_tests-test_link_unlink-1.txt
│ │ ├── sched_tests-test_link_unlink-2-dpor.txt
│ │ ├── sched_tests-test_link_unlink-2.txt
│ │ ├── sched_tests-test_link_unlink-3-dpor.txt
│ │ ├── sched_tests-test_link_unlink-3.txt
│ │ ├── sched_tests-test_link_unlink-inf-dpor.txt
│ │ ├── sched_tests-test_link_unlink-inf.txt
│ │ ├── sched_tests-test_monitor_unexisting-0-dpor.txt
│ │ ├── sched_tests-test_monitor_unexisting-0.txt
│ │ ├── sched_tests-test_monitor_unexisting-1-dpor.txt
│ │ ├── sched_tests-test_monitor_unexisting-1.txt
│ │ ├── sched_tests-test_monitor_unexisting-inf-dpor.txt
│ │ ├── sched_tests-test_monitor_unexisting-inf.txt
│ │ ├── sched_tests-test_nested_send_receive_block_twice-0-dpor.txt
│ │ ├── sched_tests-test_nested_send_receive_block_twice-0.txt
│ │ ├── sched_tests-test_nested_send_receive_block_twice-1-dpor.txt
│ │ ├── sched_tests-test_nested_send_receive_block_twice-1.txt
│ │ ├── sched_tests-test_nested_send_receive_block_twice-2-dpor.txt
│ │ ├── sched_tests-test_nested_send_receive_block_twice-2.txt
│ │ ├── sched_tests-test_receive-0-dpor.txt
│ │ ├── sched_tests-test_receive-0.txt
│ │ ├── sched_tests-test_receive-inf-dpor.txt
│ │ ├── sched_tests-test_receive-inf.txt
│ │ ├── sched_tests-test_receive_2-0-dpor.txt
│ │ ├── sched_tests-test_receive_2-0.txt
│ │ ├── sched_tests-test_receive_2-inf-dpor.txt
│ │ ├── sched_tests-test_receive_2-inf.txt
│ │ ├── sched_tests-test_receive_after_block_expr_action-0-dpor.txt
│ │ ├── sched_tests-test_receive_after_block_expr_action-0.txt
│ │ ├── sched_tests-test_receive_after_block_expr_action-inf-dpor.txt
│ │ ├── sched_tests-test_receive_after_block_expr_action-inf.txt
│ │ ├── sched_tests-test_receive_after_infinity_no_patterns-0-dpor.txt
│ │ ├── sched_tests-test_receive_after_infinity_no_patterns-0.txt
│ │ ├── sched_tests-test_receive_after_infinity_no_patterns-inf-dpor.txt
│ │ ├── sched_tests-test_receive_after_infinity_no_patterns-inf.txt
│ │ ├── sched_tests-test_receive_after_infinity_with_pattern-0-dpor.txt
│ │ ├── sched_tests-test_receive_after_infinity_with_pattern-0.txt
│ │ ├── sched_tests-test_receive_after_infinity_with_pattern-inf-dpor.txt
│ │ ├── sched_tests-test_receive_after_infinity_with_pattern-inf.txt
│ │ ├── sched_tests-test_receive_after_no_patterns-0-dpor.txt
│ │ ├── sched_tests-test_receive_after_no_patterns-0.txt
│ │ ├── sched_tests-test_receive_after_no_patterns-1-dpor.txt
│ │ ├── sched_tests-test_receive_after_no_patterns-1.txt
│ │ ├── sched_tests-test_receive_after_no_patterns-2-dpor.txt
│ │ ├── sched_tests-test_receive_after_no_patterns-2.txt
│ │ ├── sched_tests-test_receive_after_no_patterns-inf-dpor.txt
│ │ ├── sched_tests-test_receive_after_no_patterns-inf.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-0-dpor.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-0.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-1-dpor.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-1.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-2-dpor.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-2.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-3-dpor.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-3.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-inf-dpor.txt
│ │ ├── sched_tests-test_receive_after_with_pattern-inf.txt
│ │ ├── sched_tests-test_register_unregister-0-dpor.txt
│ │ ├── sched_tests-test_register_unregister-0.txt
│ │ ├── sched_tests-test_register_unregister-1-dpor.txt
│ │ ├── sched_tests-test_register_unregister-1.txt
│ │ ├── sched_tests-test_register_unregister-2-dpor.txt
│ │ ├── sched_tests-test_register_unregister-2.txt
│ │ ├── sched_tests-test_register_unregister-3-dpor.txt
│ │ ├── sched_tests-test_register_unregister-3.txt
│ │ ├── sched_tests-test_register_unregister-inf-dpor.txt
│ │ ├── sched_tests-test_register_unregister-inf.txt
│ │ ├── sched_tests-test_send-0-dpor.txt
│ │ ├── sched_tests-test_send-0.txt
│ │ ├── sched_tests-test_send-1-dpor.txt
│ │ ├── sched_tests-test_send-1.txt
│ │ ├── sched_tests-test_send-inf-dpor.txt
│ │ ├── sched_tests-test_send-inf.txt
│ │ ├── sched_tests-test_send_2-0-dpor.txt
│ │ ├── sched_tests-test_send_2-0.txt
│ │ ├── sched_tests-test_send_2-1-dpor.txt
│ │ ├── sched_tests-test_send_2-1.txt
│ │ ├── sched_tests-test_send_2-inf-dpor.txt
│ │ ├── sched_tests-test_send_2-inf.txt
│ │ ├── sched_tests-test_send_3-0-dpor.txt
│ │ ├── sched_tests-test_send_3-0.txt
│ │ ├── sched_tests-test_send_3-1-dpor.txt
│ │ ├── sched_tests-test_send_3-1.txt
│ │ ├── sched_tests-test_send_3-inf-dpor.txt
│ │ ├── sched_tests-test_send_3-inf.txt
│ │ ├── sched_tests-test_send_receive-0-dpor.txt
│ │ ├── sched_tests-test_send_receive-0.txt
│ │ ├── sched_tests-test_send_receive-1-dpor.txt
│ │ ├── sched_tests-test_send_receive-1.txt
│ │ ├── sched_tests-test_send_receive-2-dpor.txt
│ │ ├── sched_tests-test_send_receive-2.txt
│ │ ├── sched_tests-test_send_receive-inf-dpor.txt
│ │ ├── sched_tests-test_send_receive-inf.txt
│ │ ├── sched_tests-test_send_receive_2-0-dpor.txt
│ │ ├── sched_tests-test_send_receive_2-0.txt
│ │ ├── sched_tests-test_send_receive_2-1-dpor.txt
│ │ ├── sched_tests-test_send_receive_2-1.txt
│ │ ├── sched_tests-test_send_receive_2-2-dpor.txt
│ │ ├── sched_tests-test_send_receive_2-2.txt
│ │ ├── sched_tests-test_send_receive_2-inf-dpor.txt
│ │ ├── sched_tests-test_send_receive_2-inf.txt
│ │ ├── sched_tests-test_send_receive_3-0-dpor.txt
│ │ ├── sched_tests-test_send_receive_3-0.txt
│ │ ├── sched_tests-test_send_receive_3-1-dpor.txt
│ │ ├── sched_tests-test_send_receive_3-1.txt
│ │ ├── sched_tests-test_send_receive_3-2-dpor.txt
│ │ ├── sched_tests-test_send_receive_3-2.txt
│ │ ├── sched_tests-test_send_receive_3-inf-dpor.txt
│ │ ├── sched_tests-test_send_receive_3-inf.txt
│ │ ├── sched_tests-test_spawn-0-dpor.txt
│ │ ├── sched_tests-test_spawn-0.txt
│ │ ├── sched_tests-test_spawn-1-dpor.txt
│ │ ├── sched_tests-test_spawn-1.txt
│ │ ├── sched_tests-test_spawn-inf-dpor.txt
│ │ ├── sched_tests-test_spawn-inf.txt
│ │ ├── sched_tests-test_spawn_link_race-0-dpor.txt
│ │ ├── sched_tests-test_spawn_link_race-0.txt
│ │ ├── sched_tests-test_spawn_link_race-1-dpor.txt
│ │ ├── sched_tests-test_spawn_link_race-1.txt
│ │ ├── sched_tests-test_spawn_link_race-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_link_race-inf.txt
│ │ ├── sched_tests-test_spawn_link_receive_exit-0-dpor.txt
│ │ ├── sched_tests-test_spawn_link_receive_exit-0.txt
│ │ ├── sched_tests-test_spawn_link_receive_exit-1-dpor.txt
│ │ ├── sched_tests-test_spawn_link_receive_exit-1.txt
│ │ ├── sched_tests-test_spawn_link_receive_exit-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_link_receive_exit-inf.txt
│ │ ├── sched_tests-test_spawn_link_unlink-0-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink-0.txt
│ │ ├── sched_tests-test_spawn_link_unlink-1-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink-1.txt
│ │ ├── sched_tests-test_spawn_link_unlink-2-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink-2.txt
│ │ ├── sched_tests-test_spawn_link_unlink-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink-inf.txt
│ │ ├── sched_tests-test_spawn_link_unlink_2-0-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink_2-0.txt
│ │ ├── sched_tests-test_spawn_link_unlink_2-1-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink_2-1.txt
│ │ ├── sched_tests-test_spawn_link_unlink_2-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink_2-inf.txt
│ │ ├── sched_tests-test_spawn_link_unlink_3-0-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink_3-0.txt
│ │ ├── sched_tests-test_spawn_link_unlink_3-1-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink_3-1.txt
│ │ ├── sched_tests-test_spawn_link_unlink_3-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_link_unlink_3-inf.txt
│ │ ├── sched_tests-test_spawn_monitor-0-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor-0.txt
│ │ ├── sched_tests-test_spawn_monitor-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor-inf.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor-0-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor-0.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor-1-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor-1.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor-inf.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_2-0-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_2-0.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_2-1-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_2-1.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_2-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_2-inf.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_3-0-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_3-0.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_3-1-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_3-1.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_3-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_3-inf.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_4-0-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_4-0.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_4-1-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_4-1.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_4-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_monitor_demonitor_4-inf.txt
│ │ ├── sched_tests-test_spawn_opt_link_receive_exit-0-dpor.txt
│ │ ├── sched_tests-test_spawn_opt_link_receive_exit-0.txt
│ │ ├── sched_tests-test_spawn_opt_link_receive_exit-1-dpor.txt
│ │ ├── sched_tests-test_spawn_opt_link_receive_exit-1.txt
│ │ ├── sched_tests-test_spawn_opt_link_receive_exit-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_opt_link_receive_exit-inf.txt
│ │ ├── sched_tests-test_spawn_opt_monitor-0-dpor.txt
│ │ ├── sched_tests-test_spawn_opt_monitor-0.txt
│ │ ├── sched_tests-test_spawn_opt_monitor-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_opt_monitor-inf.txt
│ │ ├── sched_tests-test_spawn_register_race-0-dpor.txt
│ │ ├── sched_tests-test_spawn_register_race-0.txt
│ │ ├── sched_tests-test_spawn_register_race-1-dpor.txt
│ │ ├── sched_tests-test_spawn_register_race-1.txt
│ │ ├── sched_tests-test_spawn_register_race-2-dpor.txt
│ │ ├── sched_tests-test_spawn_register_race-2.txt
│ │ ├── sched_tests-test_spawn_register_race-inf-dpor.txt
│ │ ├── sched_tests-test_spawn_register_race-inf.txt
│ │ ├── sched_tests-test_trap_exit_timing-0-dpor.txt
│ │ ├── sched_tests-test_trap_exit_timing-0.txt
│ │ ├── sched_tests-test_trap_exit_timing-1-dpor.txt
│ │ ├── sched_tests-test_trap_exit_timing-1.txt
│ │ ├── sched_tests-test_trap_exit_timing-inf-dpor.txt
│ │ ├── sched_tests-test_trap_exit_timing-inf.txt
│ │ ├── sched_tests-test_var_mod_fun-0-dpor.txt
│ │ ├── sched_tests-test_var_mod_fun-0.txt
│ │ ├── sched_tests-test_var_mod_fun-1-dpor.txt
│ │ ├── sched_tests-test_var_mod_fun-1.txt
│ │ ├── sched_tests-test_var_mod_fun-inf-dpor.txt
│ │ ├── sched_tests-test_var_mod_fun-inf.txt
│ │ ├── sched_tests-test_whereis-0-dpor.txt
│ │ ├── sched_tests-test_whereis-0.txt
│ │ ├── sched_tests-test_whereis-1-dpor.txt
│ │ ├── sched_tests-test_whereis-1.txt
│ │ ├── sched_tests-test_whereis-2-dpor.txt
│ │ ├── sched_tests-test_whereis-2.txt
│ │ ├── sched_tests-test_whereis-inf-dpor.txt
│ │ ├── sched_tests-test_whereis-inf.txt
│ │ ├── self_exits-test1-inf-dpor.txt
│ │ ├── self_exits-test2-inf-dpor.txt
│ │ ├── self_exits-test3-inf-dpor.txt
│ │ ├── self_exits-test4-inf-dpor.txt
│ │ ├── send_after-test1-inf-dpor.txt
│ │ ├── send_after-test11-inf-dpor.txt
│ │ ├── send_after-test12-inf-dpor.txt
│ │ ├── send_after-test13-inf-dpor.txt
│ │ ├── send_after-test14-inf-dpor.txt
│ │ ├── send_after-test15-inf-dpor.txt
│ │ ├── send_after-test16-inf-dpor.txt
│ │ ├── send_after-test17-inf-dpor.txt
│ │ ├── send_after-test18-inf-dpor.txt
│ │ ├── send_after-test19-inf-dpor.txt
│ │ ├── send_after-test1A-inf-dpor.txt
│ │ ├── send_after-test1B-inf-dpor.txt
│ │ ├── send_after-test1C-inf-dpor.txt
│ │ ├── send_after-test1D-inf-dpor.txt
│ │ ├── send_after-test2-inf-dpor.txt
│ │ ├── send_after-test3-inf-dpor.txt
│ │ ├── send_after-test4-inf-dpor.txt
│ │ ├── send_after-test5-inf-dpor.txt
│ │ ├── send_after-test6-inf-dpor.txt
│ │ ├── send_after-test7-inf-dpor.txt
│ │ ├── send_after-test8-inf-dpor.txt
│ │ ├── send_after-test9-inf-dpor.txt
│ │ ├── send_after-testA-inf-dpor.txt
│ │ ├── send_after-testB-inf-dpor.txt
│ │ ├── send_after-testC-inf-dpor.txt
│ │ ├── send_after_trouble-test-inf-dpor.txt
│ │ ├── send_named_vs_send-send_named_vs_send-inf-dpor.txt
│ │ ├── send_receive_dependencies-send_receive_dependencies-inf-dpor.txt
│ │ ├── send_self-test-inf-dpor.txt
│ │ ├── send_self-test1-inf-dpor.txt
│ │ ├── send_self-test2-inf-dpor.txt
│ │ ├── send_self-test3-inf-dpor.txt
│ │ ├── send_using_names-send_using_names-inf-dpor.txt
│ │ ├── send_vs_trap_exit-send_vs_trap_exit-inf-dpor.txt
│ │ ├── signals_vs_messages-test-inf-dpor.txt
│ │ ├── signals_vs_messages-test1-inf-dpor.txt
│ │ ├── simple_ets-simple_ets-inf-dpor.txt
│ │ ├── simple_spawn-simple_spawn-inf-dpor.txt
│ │ ├── sleep_set_block_not_bad-test-inf-persistent.txt
│ │ ├── spawn_and_send-spawn_and_send-inf-dpor.txt
│ │ ├── spawn_bad-test-inf-dpor.txt
│ │ ├── spawn_failure-spawn_failure-inf-dpor.txt
│ │ ├── spawn_monitor_test-spawn_monitor_test-inf-dpor.txt
│ │ ├── spawned_sender_crasher-spawned_sender_crasher-inf-dpor.txt
│ │ ├── spawned_senders-spawned_senders-inf-dpor.txt
│ │ ├── stacktrace_vs_exit-test-inf-optimal.txt
│ │ ├── system_info-test-inf-optimal.txt
│ │ ├── system_instant_delivery-test-inf-optimal.txt
│ │ ├── system_non_instant_delivery-test-inf-optimal.txt
│ │ ├── timers_afters_exits_crashes-both_crash-inf-dpor.txt
│ │ ├── timers_afters_exits_crashes-child_crashes-inf-dpor.txt
│ │ ├── timers_afters_exits_crashes-my_exit_bad-inf-dpor.txt
│ │ ├── timers_afters_exits_crashes-my_exit_ok-inf-dpor.txt
│ │ ├── timers_afters_exits_crashes-my_start_timer-inf-dpor.txt
│ │ ├── timestamps-exit_system_time0-inf-optimal.txt
│ │ ├── timestamps-exit_system_time1-inf-optimal.txt
│ │ ├── timestamps-exit_timestamp-inf-optimal.txt
│ │ ├── timestamps-other_system_time0-inf-optimal.txt
│ │ ├── timestamps-other_system_time1-inf-optimal.txt
│ │ ├── timestamps-other_timestamp-inf-optimal.txt
│ │ ├── trace_the_sender-trace_the_sender-inf-dpor.txt
│ │ ├── transparent_instrumentation-test-inf-dpor.txt
│ │ ├── trigger_the_after-trigger_the_after-inf-dpor.txt
│ │ ├── unregister_deadlocked-test1-inf-dpor.txt
│ │ └── waiting-waiting-inf-dpor.txt
│ └── src
│ │ ├── ac_tab_delete_crash.erl
│ │ ├── ac_tab_insert.erl
│ │ ├── after_test_2.erl
│ │ ├── after_test_3.erl
│ │ ├── after_vs_trap_exit.erl
│ │ ├── allow_first_crash.erl
│ │ ├── application_check.erl
│ │ ├── assert_filter.erl
│ │ ├── assert_tip.erl
│ │ ├── bad_dictionary.erl
│ │ ├── bad_whereis.erl
│ │ ├── code_when_undef.erl
│ │ ├── concuerror_crash.erl
│ │ ├── curious_builtins.erl
│ │ ├── dead_receive.erl
│ │ ├── deeper_exit.erl
│ │ ├── demonitor_exhaustive.erl
│ │ ├── demonitor_flush.erl
│ │ ├── demonitor_sane_opts.erl
│ │ ├── depth_bound.erl
│ │ ├── erlang_display.erl
│ │ ├── erlang_display_string.erl
│ │ ├── ets_delete.erl
│ │ ├── ets_delete_2.erl
│ │ ├── ets_delete_all.erl
│ │ ├── ets_delete_object.erl
│ │ ├── ets_exceptions.erl
│ │ ├── ets_give_away.erl
│ │ ├── ets_global_global.erl
│ │ ├── ets_heir.erl
│ │ ├── ets_heir_2.erl
│ │ ├── ets_info.erl
│ │ ├── ets_info_details.erl
│ │ ├── ets_insert_new.erl
│ │ ├── ets_insert_objects.erl
│ │ ├── ets_many_insert_new.erl
│ │ ├── ets_new.erl
│ │ ├── ets_new_failure.erl
│ │ ├── ets_new_failure_2.erl
│ │ ├── ets_new_failure_3.erl
│ │ ├── ets_ref_keys.erl
│ │ ├── ets_rename.erl
│ │ ├── ets_select.erl
│ │ ├── ets_unguarded.erl
│ │ ├── ets_unnamed.erl
│ │ ├── ets_update_counter.erl
│ │ ├── ets_update_element.erl
│ │ ├── ets_whereis.erl
│ │ ├── exit.erl
│ │ ├── exit_kill.erl
│ │ ├── exit_message_unpredicted.erl
│ │ ├── file_read_file.erl
│ │ ├── fun_fail.erl
│ │ ├── group_leader.erl
│ │ ├── group_leader2.erl
│ │ ├── group_leader3.erl
│ │ ├── halt_error.erl
│ │ ├── halt_support.erl
│ │ ├── hibernate.erl
│ │ ├── hopeless_after.erl
│ │ ├── i_hate_myself.erl
│ │ ├── ignore_error_1.erl
│ │ ├── ignore_error_2.erl
│ │ ├── ignore_error_3.erl
│ │ ├── immediate_delivery.erl
│ │ ├── infinite_loop.erl
│ │ ├── init_race_condition.erl
│ │ ├── inspect_system.erl
│ │ ├── instr_apply.erl
│ │ ├── io_error.erl
│ │ ├── io_format.erl
│ │ ├── io_format_2.erl
│ │ ├── io_format_3.erl
│ │ ├── irrelevant_send.erl
│ │ ├── is_process_alive_1.erl
│ │ ├── keep_going.erl
│ │ ├── kill_running_waiting.erl
│ │ ├── late_hope.erl
│ │ ├── lid_test.erl
│ │ ├── link_after.erl
│ │ ├── load_before_start.erl
│ │ ├── log_all.erl
│ │ ├── main_and_backup.erl
│ │ ├── many_kill.erl
│ │ ├── many_links.erl
│ │ ├── many_monitors.erl
│ │ ├── many_send_to_dead.erl
│ │ ├── many_send_to_dead_2.erl
│ │ ├── message_queue_length.erl
│ │ ├── messed_deliveries.erl
│ │ ├── module_loaded_dep.erl
│ │ ├── monitor_demonitor.erl
│ │ ├── monitor_failure.erl
│ │ ├── monitor_info.erl
│ │ ├── monitor_missing_messages.erl
│ │ ├── monitor_named.erl
│ │ ├── monitor_order.erl
│ │ ├── monotonic_time.erl
│ │ ├── node_names.erl
│ │ ├── nonexistent_module.erl
│ │ ├── normal_exit.erl
│ │ ├── normal_shutdown.erl
│ │ ├── normal_tuple_exit.erl
│ │ ├── os_timestamp.erl
│ │ ├── pids_are_unsafe.erl
│ │ ├── process_flag_link.erl
│ │ ├── process_info.erl
│ │ ├── processes.erl
│ │ ├── processes_leader.erl
│ │ ├── racing_after.erl
│ │ ├── receive_after.erl
│ │ ├── receive_and_after.erl
│ │ ├── receive_catchall.erl
│ │ ├── receive_exit.erl
│ │ ├── receive_loop.erl
│ │ ├── receive_with_guard.erl
│ │ ├── receive_without_trapping.erl
│ │ ├── register_link.erl
│ │ ├── registered_1.erl
│ │ ├── registered_2.erl
│ │ ├── registered_send_1.erl
│ │ ├── registered_send_2.erl
│ │ ├── registered_send_3.erl
│ │ ├── replay_sanity.erl
│ │ ├── report_blocks.erl
│ │ ├── reuse_raw_pid.erl
│ │ ├── safeops_coverage.erl
│ │ ├── sched_tests.erl
│ │ ├── self_exits.erl
│ │ ├── send_after.erl
│ │ ├── send_after_trouble.erl
│ │ ├── send_named_vs_send.erl
│ │ ├── send_receive_dependencies.erl
│ │ ├── send_self.erl
│ │ ├── send_using_names.erl
│ │ ├── send_vs_trap_exit.erl
│ │ ├── signals_vs_messages.erl
│ │ ├── simple_ets.erl
│ │ ├── simple_spawn.erl
│ │ ├── sleep_set_block_not_bad.erl
│ │ ├── spawn_and_send.erl
│ │ ├── spawn_bad.erl
│ │ ├── spawn_failure.erl
│ │ ├── spawn_monitor_test.erl
│ │ ├── spawned_sender_crasher.erl
│ │ ├── spawned_senders.erl
│ │ ├── stacktrace_vs_exit.erl
│ │ ├── system_info.erl
│ │ ├── system_instant_delivery.erl
│ │ ├── system_non_instant_delivery.erl
│ │ ├── timers_afters_exits_crashes.erl
│ │ ├── timestamps.erl
│ │ ├── trace_the_sender.erl
│ │ ├── transparent_instrumentation.erl
│ │ ├── trigger_the_after.erl
│ │ ├── unregister_deadlocked.erl
│ │ ├── unsupported_exit.erl
│ │ └── waiting.erl
├── bounding_tests
│ ├── results
│ │ ├── manolis-test_2workers_small-1-bpor-source.txt
│ │ ├── readers-test-0-dpor.txt
│ │ ├── readers-test-1-dpor.txt
│ │ ├── readers-test-2-dpor.txt
│ │ ├── readers-test-3-dpor.txt
│ │ ├── readers-test-4-dpor.txt
│ │ ├── readers-test-5-dpor.txt
│ │ ├── readers-test-6-dpor.txt
│ │ ├── readers-test-7-dpor.txt
│ │ ├── readers_2-test-0-dpor.txt
│ │ ├── readers_2-test-1-dpor.txt
│ │ ├── readers_2-test-2-dpor.txt
│ │ ├── readers_2-test-3-dpor.txt
│ │ ├── readers_2-test-4-dpor.txt
│ │ ├── readers_2-test-5-dpor.txt
│ │ ├── readers_2-test-6-dpor.txt
│ │ ├── readers_2-test-7-dpor.txt
│ │ ├── readers_compare-test-0-bpor-persistent.txt
│ │ ├── readers_compare-test-0-bpor-source.txt
│ │ ├── readers_compare-test-0-optimal.txt
│ │ ├── readers_compare-test-0-persistent.txt
│ │ ├── readers_compare-test-0-source.txt
│ │ ├── readers_compare-test-1-bpor-persistent.txt
│ │ ├── readers_compare-test-1-bpor-source.txt
│ │ ├── readers_compare-test-1-optimal.txt
│ │ ├── readers_compare-test-1-persistent.txt
│ │ ├── readers_compare-test-1-source.txt
│ │ ├── readers_compare-test-2-bpor-persistent.txt
│ │ ├── readers_compare-test-2-bpor-source.txt
│ │ ├── readers_compare-test-2-optimal.txt
│ │ ├── readers_compare-test-2-persistent.txt
│ │ ├── readers_compare-test-2-source.txt
│ │ ├── readers_compare-test-6-bpor-persistent.txt
│ │ ├── readers_compare-test-6-bpor-source.txt
│ │ ├── readers_compare-test-6-optimal.txt
│ │ ├── readers_compare-test-6-persistent.txt
│ │ ├── readers_compare-test-6-source.txt
│ │ ├── readers_delay-test-0-nodpor.txt
│ │ ├── readers_delay-test-1-nodpor.txt
│ │ ├── readers_delay-test-2-nodpor.txt
│ │ ├── readers_delay-test-3-nodpor.txt
│ │ ├── readers_delay-test-4-nodpor.txt
│ │ ├── readers_delay-test-5-nodpor.txt
│ │ ├── readers_delay-test-6-nodpor.txt
│ │ ├── readers_no_preempt-test-0-bpor-persistent.txt
│ │ ├── readers_no_preempt-test-0-bpor-source.txt
│ │ ├── readers_no_preempt-test-0-optimal.txt
│ │ ├── readers_no_preempt-test-0-persistent.txt
│ │ ├── readers_no_preempt-test-0-source.txt
│ │ ├── readers_no_preempt-test-1-bpor-persistent.txt
│ │ ├── readers_no_preempt-test-1-bpor-source.txt
│ │ ├── readers_no_preempt-test-1-optimal.txt
│ │ ├── readers_no_preempt-test-1-persistent.txt
│ │ ├── readers_no_preempt-test-1-source.txt
│ │ ├── readers_no_preempt-test-2-bpor-persistent.txt
│ │ ├── readers_no_preempt-test-2-bpor-source.txt
│ │ ├── readers_no_preempt-test-2-optimal.txt
│ │ ├── readers_no_preempt-test-2-persistent.txt
│ │ ├── readers_no_preempt-test-2-source.txt
│ │ ├── simple_delay-test-0-dpor.txt
│ │ ├── simple_delay-test-1-dpor.txt
│ │ ├── simple_delay-test-2-dpor.txt
│ │ ├── writers-test-0-dpor.txt
│ │ ├── writers-test-1-dpor.txt
│ │ ├── writers-test-2-dpor.txt
│ │ ├── writers-test-3-dpor.txt
│ │ ├── writers-test-4-dpor.txt
│ │ ├── writers-test-5-dpor.txt
│ │ ├── writers-test-6-dpor.txt
│ │ └── writers-test-7-dpor.txt
│ └── src
│ │ ├── manolis
│ │ ├── rush_hour.erl
│ │ ├── search.erl
│ │ └── test.erl
│ │ ├── readers.erl
│ │ ├── readers_2.erl
│ │ ├── readers_compare.erl
│ │ ├── readers_delay.erl
│ │ ├── readers_no_preempt.erl
│ │ ├── simple_delay.erl
│ │ └── writers.erl
├── corner_tests
│ ├── results
│ │ └── deliver_exhaustive-test-inf-nodpor.txt
│ └── src
│ │ └── deliver_exhaustive.erl
├── dpor_tests
│ ├── results
│ │ ├── POPL_optimal_example-test-inf-dpor.txt
│ │ ├── POPL_optimal_example-test-inf-source.txt
│ │ ├── after_test-after_test-inf-dpor.txt
│ │ ├── after_test_reduced-after_test_reduced-inf-dpor.txt
│ │ ├── combination_lock_1-combination_lock_1-inf-dpor.txt
│ │ ├── combination_lock_1-combination_lock_1-inf-source.txt
│ │ ├── complete_test_1-complete_test_1-inf-dpor.txt
│ │ ├── complete_test_2-complete_test_2-inf-dpor.txt
│ │ ├── conditional_readers-conditional_readers-inf-dpor.txt
│ │ ├── conditional_readers_2-conditional_readers_2-inf-dpor.txt
│ │ ├── conditional_readers_3-conditional_readers_3-inf-dpor.txt
│ │ ├── depend_1-depend_1-inf-dpor.txt
│ │ ├── depend_2-depend_2-inf-dpor.txt
│ │ ├── depend_3-depend_3-inf-dpor.txt
│ │ ├── depend_4-depend_4-inf-dpor.txt
│ │ ├── depend_4_screen-depend_4_screen-inf-dpor.txt
│ │ ├── depend_5-depend_5-inf-dpor.txt
│ │ ├── depend_6-depend_6-inf-dpor.txt
│ │ ├── depend_6_newest-test-inf-dpor.txt
│ │ ├── depend_6_round-test-inf-dpor.txt
│ │ ├── diff_dep_1-diff_dep_1-inf-dpor.txt
│ │ ├── diff_dep_2-diff_dep_2-inf-dpor.txt
│ │ ├── diff_dep_3-diff_dep_3-inf-dpor.txt
│ │ ├── diff_obs-test-inf-optimal.txt
│ │ ├── difficult_readers-difficult_readers-inf-dpor.txt
│ │ ├── ets_cross-test-inf-dpor.txt
│ │ ├── ets_dependencies-ets_dependencies-inf-dpor.txt
│ │ ├── ets_dependencies_2-ets_dependencies_2-inf-dpor.txt
│ │ ├── ets_dependencies_3-ets_dependencies_3-inf-dpor.txt
│ │ ├── ets_dependencies_deeper-ets_dependencies_deeper-inf-dpor.txt
│ │ ├── ets_dependencies_deeper_2-ets_dependencies_deeper_2-inf-dpor.txt
│ │ ├── ets_dependencies_n-ets_dependencies_n-inf-dpor.txt
│ │ ├── ets_writing_same-ets_writing_same-inf-dpor.txt
│ │ ├── etsi-etsi-inf-dpor.txt
│ │ ├── etsi_2-etsi_2-inf-dpor.txt
│ │ ├── etsi_3-etsi_3-inf-dpor.txt
│ │ ├── etsi_4-etsi_4-inf-dpor.txt
│ │ ├── etsi_5-etsi_5-inf-dpor.txt
│ │ ├── etsi_6-etsi_6-inf-dpor.txt
│ │ ├── etsi_7-etsi_7-inf-dpor.txt
│ │ ├── etsi_8-etsi_8-inf-dpor.txt
│ │ ├── file_system_example-test-inf-dpor.txt
│ │ ├── hairbrush_teeth_1-hairbrush_teeth_1-inf-dpor.txt
│ │ ├── hairbrush_teeth_2-hairbrush_teeth_2-inf-dpor.txt
│ │ ├── hairbrush_teeth_3-hairbrush_teeth_3-inf-dpor.txt
│ │ ├── hairbrush_teeth_4-hairbrush_teeth_4-inf-dpor.txt
│ │ ├── independent_receivers-independent_receivers-inf-dpor.txt
│ │ ├── indifferent_senders-indifferent_senders-inf-dpor.txt
│ │ ├── last_zero-test-inf-dpor.txt
│ │ ├── last_zero-test-inf-source.txt
│ │ ├── long_chain-long_chain-inf-dpor.txt
│ │ ├── many_initials-many_initials-inf-dpor.txt
│ │ ├── many_kill_2-test-inf-dpor.txt
│ │ ├── manywrite-manywrite-inf-dpor.txt
│ │ ├── manywrite_2-manywrite_2-inf-dpor.txt
│ │ ├── messages_1-messages_1-inf-dpor.txt
│ │ ├── messages_2-test-inf-dpor.txt
│ │ ├── no_observers-test-inf-optimal.txt
│ │ ├── not_prerequisite_1-not_prerequisite_1-inf-dpor.txt
│ │ ├── observable_others-dep_obs-inf-optimal.txt
│ │ ├── observable_others-dep_unobs-inf-optimal.txt
│ │ ├── observable_others-indep_obs-inf-optimal.txt
│ │ ├── observable_others-indep_unobs-inf-optimal.txt
│ │ ├── precise_demonitor-demonitor_empty-inf-optimal.txt
│ │ ├── precise_demonitor-demonitor_flush-inf-optimal.txt
│ │ ├── precise_demonitor-demonitor_flush_info-inf-optimal.txt
│ │ ├── precise_demonitor-demonitor_info-inf-optimal.txt
│ │ ├── priorities-priorities-inf-dpor.txt
│ │ ├── process_info-links-inf-optimal.txt
│ │ ├── proxy-proxy-inf-dpor.txt
│ │ ├── proxy2-proxy2-inf-dpor.txt
│ │ ├── readers-test-inf-optimal.txt
│ │ ├── readers-test-inf-persistent.txt
│ │ ├── readers-test-inf-source.txt
│ │ ├── readers_basic-readers_basic-inf-dpor.txt
│ │ ├── readers_rrw-readers_rrw-inf-dpor.txt
│ │ ├── readers_rwr-readers_rwr-inf-dpor.txt
│ │ ├── readers_wrr-readers_wrr-inf-dpor.txt
│ │ ├── receive_order-test1-inf-dpor.txt
│ │ ├── receive_order-test2-inf-dpor.txt
│ │ ├── receive_order-test3-inf-dpor.txt
│ │ ├── register_again-register_again-inf-dpor.txt
│ │ ├── register_again_2-register_again_2-inf-dpor.txt
│ │ ├── same_messages-same_messages-inf-dpor.txt
│ │ ├── same_messages_2-same_messages_2-inf-dpor.txt
│ │ ├── same_messages_3-same_messages_3-inf-dpor.txt
│ │ ├── same_messages_4-same_messages_4-inf-dpor.txt
│ │ ├── send_it_ets-send_it_ets-inf-dpor.txt
│ │ ├── sleeping_races_1-sleeping_races_1-inf-dpor.txt
│ │ ├── sleeping_races_2-sleeping_races_2-inf-dpor.txt
│ │ ├── sleeping_races_3_read-sleeping_races_3_read-inf-dpor.txt
│ │ ├── sleeping_races_3_write-sleeping_races_3_write-inf-dpor.txt
│ │ ├── sleeping_races_4-sleeping_races_4-inf-dpor.txt
│ │ ├── sleeping_races_5-sleeping_races_5-inf-dpor.txt
│ │ ├── sleeping_races_6-sleeping_races_6-inf-dpor.txt
│ │ ├── sleeping_races_6-sleeping_races_6-inf-source.txt
│ │ ├── sleeping_races_7-sleeping_races_7-inf-dpor.txt
│ │ ├── sleeping_races_8-sleeping_races_8-inf-dpor.txt
│ │ ├── stress-stress-inf-dpor.txt
│ │ ├── sync_start-sync_start-inf-dpor.txt
│ │ ├── test_after_spawns-test_after_spawns-inf-dpor.txt
│ │ ├── timer_replayed-test-inf-dpor.txt
│ │ ├── tricky_predecessors-tricky_predecessors-inf-dpor.txt
│ │ ├── two_writers_readers_1-two_writers_readers_1-inf-dpor.txt
│ │ ├── two_writers_readers_2-two_writers_readers_2-inf-dpor.txt
│ │ ├── wakeup_many-wakeup_many-inf-dpor.txt
│ │ ├── workers-workers-inf-dpor.txt
│ │ ├── workers_2-workers_2-inf-dpor.txt
│ │ └── writeread-writeread-inf-dpor.txt
│ └── src
│ │ ├── POPL_optimal_example.erl
│ │ ├── after_test.erl
│ │ ├── after_test_reduced.erl
│ │ ├── combination_lock_1.erl
│ │ ├── complete_test_1.erl
│ │ ├── complete_test_2.erl
│ │ ├── conditional_readers.erl
│ │ ├── conditional_readers_2.erl
│ │ ├── conditional_readers_3.erl
│ │ ├── depend_1.erl
│ │ ├── depend_2.erl
│ │ ├── depend_3.erl
│ │ ├── depend_4.erl
│ │ ├── depend_4_screen.erl
│ │ ├── depend_5.erl
│ │ ├── depend_6.erl
│ │ ├── depend_6_newest.erl
│ │ ├── depend_6_round.erl
│ │ ├── diff_dep_1.erl
│ │ ├── diff_dep_2.erl
│ │ ├── diff_dep_3.erl
│ │ ├── diff_obs.erl
│ │ ├── difficult_readers.erl
│ │ ├── ets_cross.erl
│ │ ├── ets_dependencies.erl
│ │ ├── ets_dependencies_2.erl
│ │ ├── ets_dependencies_3.erl
│ │ ├── ets_dependencies_deeper.erl
│ │ ├── ets_dependencies_deeper_2.erl
│ │ ├── ets_dependencies_n.erl
│ │ ├── ets_writing_same.erl
│ │ ├── etsi.erl
│ │ ├── etsi_2.erl
│ │ ├── etsi_3.erl
│ │ ├── etsi_4.erl
│ │ ├── etsi_5.erl
│ │ ├── etsi_6.erl
│ │ ├── etsi_7.erl
│ │ ├── etsi_8.erl
│ │ ├── file_system_example.erl
│ │ ├── hairbrush_teeth_1.erl
│ │ ├── hairbrush_teeth_2.erl
│ │ ├── hairbrush_teeth_3.erl
│ │ ├── hairbrush_teeth_4.erl
│ │ ├── independent_receivers.erl
│ │ ├── indifferent_senders.erl
│ │ ├── last_zero.erl
│ │ ├── long_chain.erl
│ │ ├── many_initials.erl
│ │ ├── many_kill_2.erl
│ │ ├── manywrite.erl
│ │ ├── manywrite_2.erl
│ │ ├── messages_1.erl
│ │ ├── messages_2.erl
│ │ ├── no_observers.erl
│ │ ├── not_prerequisite_1.erl
│ │ ├── observable_others.erl
│ │ ├── precise_demonitor.erl
│ │ ├── priorities.erl
│ │ ├── process_info.erl
│ │ ├── proxy.erl
│ │ ├── proxy2.erl
│ │ ├── readers.erl
│ │ ├── readers_basic.erl
│ │ ├── readers_rrw.erl
│ │ ├── readers_rwr.erl
│ │ ├── readers_wrr.erl
│ │ ├── receive_order.erl
│ │ ├── register_again.erl
│ │ ├── register_again_2.erl
│ │ ├── same_messages.erl
│ │ ├── same_messages_2.erl
│ │ ├── same_messages_3.erl
│ │ ├── same_messages_4.erl
│ │ ├── send_it_ets.erl
│ │ ├── sleeping_races_1.erl
│ │ ├── sleeping_races_2.erl
│ │ ├── sleeping_races_3_read.erl
│ │ ├── sleeping_races_3_write.erl
│ │ ├── sleeping_races_4.erl
│ │ ├── sleeping_races_5.erl
│ │ ├── sleeping_races_6.erl
│ │ ├── sleeping_races_7.erl
│ │ ├── sleeping_races_8.erl
│ │ ├── stress.erl
│ │ ├── sync_start.erl
│ │ ├── test_after_spawns.erl
│ │ ├── timer_replayed.erl
│ │ ├── tricky_predecessors.erl
│ │ ├── two_writers_readers_1.erl
│ │ ├── two_writers_readers_2.erl
│ │ ├── wakeup_many.erl
│ │ ├── workers.erl
│ │ ├── workers_2.erl
│ │ └── writeread.erl
└── erlang_tests
│ ├── results
│ ├── erlang_maps-maps_fold-inf-optimal.txt
│ ├── erlang_timer-cancel_bad-inf-optimal.txt
│ ├── erlang_timer-cancel_badarg-inf-optimal.txt
│ ├── erlang_timer-read_bad-inf-optimal.txt
│ └── erlang_timer-read_badarg-inf-optimal.txt
│ └── src
│ ├── erlang_maps.erl
│ └── erlang_timer.erl
├── test_template.erl
└── test_template_stripped.erl
/.editorconfig:
--------------------------------------------------------------------------------
1 |
2 |
3 | # EditorConfig is awesome: https://EditorConfig.org
4 |
5 | # top-most EditorConfig file
6 | root = true
7 |
8 | # Unix-style newlines with a newline ending every file
9 | [*]
10 | end_of_line = lf
11 | insert_final_newline = true
12 | indent_style = space
13 | indent_size = 2
14 |
15 | # Tab indentation
16 | [Makefile]
17 | indent_style = tab
18 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 |
5 | ---
6 |
7 | **Describe the bug**
8 | A clear and concise description of what the bug is.
9 |
10 | **To Reproduce**
11 | Steps to reproduce the behavior:
12 | 1. Create a directory containing the following files and change into it: '...'
13 | 2. Run Concuerror in the following way: '...'
14 |
15 | **Expected behavior**
16 | A clear and concise description of what you expected to happen.
17 |
18 | **Environment (please complete the following information):**
19 | - OS: [e.g. Debian]
20 | - Concuerror Version: [retrieve by `concuerror --version`]
21 |
22 | **Additional context**
23 | Add any other context about the problem here.
24 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 |
5 | ---
6 |
7 | **Is your feature request related to a problem? Please describe.**
8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
9 |
10 | **Describe the solution you'd like**
11 | A clear and concise description of what you want to happen.
12 |
13 | **Describe alternatives you've considered**
14 | A clear and concise description of any alternative solutions or features you've considered.
15 |
16 | **Additional context**
17 | Add any other context or screenshots about the feature request here.
18 |
--------------------------------------------------------------------------------
/.github/codecov.yml:
--------------------------------------------------------------------------------
1 | codecov:
2 | notify:
3 | after_n_builds: 4
4 | comment:
5 | after_n_builds: 4
6 | coverage:
7 | status:
8 | project:
9 | default:
10 | target: 94%
11 | patch:
12 | default:
13 | target: 90%
14 | fixes:
15 | - "_build/default/lib/concuerror/::"
16 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | ## Summary
2 |
3 | Describe what will be improved after merging this Pull Request.
4 |
5 | ## Checklist
6 |
7 | * [ ] Has tests (or doesn't need them)
8 | * [ ] Updates CHANGELOG (or too minor)
9 | * [ ] References related Issues
10 |
--------------------------------------------------------------------------------
/.github/scripts/covertool_combine:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | EBIN=$(rebar3 path --ebin --app concuerror)
5 | cd cover
6 | export COVER_COMBINE=all.coverdata
7 | ./cover-report data || true
8 | covertool/covertool -cover $COVER_COMBINE -ebin $EBIN -appname concuerror
9 | cd ..
10 |
--------------------------------------------------------------------------------
/.github/scripts/covertool_setup:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | make cover/data
5 | cd cover
6 | git clone https://github.com/covertool/covertool.git --branch 2.0.3
7 | cd covertool
8 | make compile
9 |
--------------------------------------------------------------------------------
/.github/workflows/website.yml:
--------------------------------------------------------------------------------
1 | name: Website
2 |
3 | on:
4 | push:
5 | branches: master
6 | paths: 'docs/**'
7 | pull_request:
8 | branches: master
9 | paths: 'docs/**'
10 | schedule:
11 | # Run at 00:00 UTC on the first day of each month
12 | - cron: '00 00 1 * *'
13 |
14 | jobs:
15 | test:
16 | strategy:
17 | matrix:
18 | target:
19 | - test
20 | - test-external
21 | name: ${{ matrix.target }}
22 | runs-on: ubuntu-latest
23 | steps:
24 | - uses: actions/checkout@v4
25 | - uses: ruby/setup-ruby@v1
26 | with:
27 | ruby-version: 3.2
28 | bundler-cache: true
29 | working-directory: docs
30 | - run: make -C docs ${{ matrix.target }}
31 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # NOTE! Please use 'git ls-files -i --exclude-standard'
2 | # command after changing this file, to see if there are
3 | # any tracked files which get ignored after the change.
4 |
5 | _build
6 | *.beam
7 | concuerror_report.txt
8 | erl_crash.dump
9 | thediff
10 | rebar3
11 |
--------------------------------------------------------------------------------
/bin/.gitignore:
--------------------------------------------------------------------------------
1 | concuerror
2 |
--------------------------------------------------------------------------------
/cover/.gitignore:
--------------------------------------------------------------------------------
1 | *.coverdata
2 | *.COVER.html
3 | covertool
4 | data
5 |
--------------------------------------------------------------------------------
/doc/.gitignore:
--------------------------------------------------------------------------------
1 | *_option.edoc
2 | *.css
3 | *.html
4 | edoc-info
5 | erlang.png
6 | Gemfile.lock
7 |
--------------------------------------------------------------------------------
/doc/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem "html-proofer"
4 |
--------------------------------------------------------------------------------
/doc/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: default
2 | default: build
3 |
4 | Gemfile.lock: Gemfile
5 | bundle install
6 | touch $@
7 |
8 | .PHONY: build
9 | build:
10 | make -C .. edoc
11 |
12 | .PHONY: test
13 | test: build Gemfile.lock
14 | bundle exec htmlproofer --disable-external=true --ignore-files "/vendor/" --log_level=debug --allow_missing_href=true --enforce_https=false .
15 |
16 | .PHONY: clean
17 | clean:
18 | $(RM) *_option.edoc *.html *.css erlang.png edoc-info Gemfile.lock
19 |
--------------------------------------------------------------------------------
/docs/.bundle/config:
--------------------------------------------------------------------------------
1 | ---
2 | BUNDLE_PATH: "vendor/bundle"
3 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | /_site
2 | .jekyll-cache
3 | vendor
4 |
--------------------------------------------------------------------------------
/docs/404.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: search
3 | title: "Page Not Found"
4 | description: "Page not found"
5 | ---
6 |
7 | ## 404 Error
8 |
9 | Sorry, but the page you were trying to view does not exist.
10 |
11 | Search the site:
12 |
--------------------------------------------------------------------------------
/docs/CNAME:
--------------------------------------------------------------------------------
1 | concuerror.com
--------------------------------------------------------------------------------
/docs/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem "github-pages", group: :jekyll_plugins
4 | gem "html-proofer"
5 | gem "webrick"
6 |
--------------------------------------------------------------------------------
/docs/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: default
2 | default: build
3 |
4 | JEKYLL = bundle exec jekyll
5 | PROOFER = bundle exec htmlproofer ./_site --checks "Images,Links,Script,Favicon,OpenGraph"
6 |
7 | .PHONY: jekyll
8 | jekyll: Gemfile
9 | bundle install
10 |
11 | .PHONY: build
12 | build: jekyll
13 | $(JEKYLL) build
14 |
15 | .PHONY: serve
16 | serve: jekyll
17 | $(JEKYLL) serve --config _config.yml,_config_local.yml
18 |
19 | .PHONY: test
20 | test: build
21 | $(PROOFER) --disable_external
22 |
23 | .PHONY: test-external
24 | test-external: build
25 | $(PROOFER) --ignore-status-codes "302,403"
26 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Concuerror's Website
2 |
3 | Based on the [**So Simple Theme**](http://mmistakes.github.io)
4 |
5 | ## How to build
6 |
7 | `bundle install`
8 | `jekyll serve`
9 |
--------------------------------------------------------------------------------
/docs/_config_local.yml:
--------------------------------------------------------------------------------
1 | url: ""
2 |
--------------------------------------------------------------------------------
/docs/_data/authors.yml:
--------------------------------------------------------------------------------
1 | stavros:
2 | name: Stavros Aronis
3 | picture: https://www.gravatar.com/avatar/5730e85681def67cb10151437519f39d?s=200
4 | email: aronisstav@gmail.com
5 | twitter: "@Vahnatai"
6 | links:
7 | - title: Twitter
8 | url: https://twitter.com/Vahnatai
9 | icon: fab fa-twitter-square
10 | - title: Github
11 | url: https://github.com/aronisstav
12 | icon: fab fa-github
13 |
--------------------------------------------------------------------------------
/docs/_includes/footer-custom.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/docs/_includes/head-custom.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/docs/_includes/masthead.html:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/docs/_includes/yt.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/docs/_posts/2013-09-03-site.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Concuerror's website"
4 | category: news
5 | redirect_from: /site.html
6 | ---
7 |
8 | Concuerror just got a website!
9 |
--------------------------------------------------------------------------------
/docs/_posts/2013-09-23-euc-2013.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Tutorial at EUC 2013: Video and Slides"
4 | author: Kostis Sagonas
5 | category: tutorials
6 | ---
7 |
8 | Kostis Sagonas gave a presentation about Concuerror at the Erlang User Conference 2013.
9 |
10 | {% assign yt-link = "FpkjKN9wTKg" %}
11 | {% include yt.html %}
12 |
13 | [Get the slides](https://www.erlang-factory.com/upload/presentations/858/euc_pres.pdf).
14 |
15 | You can also find the video and slides [here](https://www.erlang-factory.com/conference/ErlangUserConference2013/speakers/KostisSagonas).
16 |
--------------------------------------------------------------------------------
/docs/_posts/2015-06-10-euc-2015.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Tutorial at EUC 2015: Slides"
4 | category: tutorials
5 | updated: 2015-06-10
6 | ---
7 |
8 | Stavros Aronis is presenting a tutorial on Concuerror at the Erlang User Conference 2015.
9 |
10 | You can find more info [here](https://www.erlang-factory.com/euc2015/stavros-aronis).
11 |
12 | The slides are [here](https://docs.google.com/presentation/d/1dRUQ1jC0NXRyM-6WJWo15n-3hSZ1p7F8fl3X4bdhis8/pub?start=false&loop=false&delayms=60000).
13 |
--------------------------------------------------------------------------------
/docs/_posts/2017-08-14-euc-2017-talk.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Talk at EUC 2017: Video and Slides"
4 | category: news
5 | redirect_from: /euc-2017-talk.html
6 | ---
7 |
8 | Kostis Sagonas presented a talk on Concuerror at the Erlang User Conference 2017.
9 |
10 | {% assign yt-link = "WWBDUpmCUsI" %}
11 | {% include yt.html %}
12 |
13 | [Get the slides](https://docs.google.com/presentation/d/11nidXG5JazNXsNSoqW98oRlx7-e64ghQ_E1p_WMLitg).
14 |
15 | You can find more info [here](https://www.erlang-factory.com/euc2017/kostis-sagonas).
16 |
--------------------------------------------------------------------------------
/docs/_posts/2017-08-14-euc-2017-tutorial.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Tutorial at EUC 2017: Slides"
4 | category: tutorials
5 | ---
6 |
7 | Stavros Aronis presented a tutorial on Concuerror at the Erlang User Conference 2017.
8 |
9 | You can find more info [here](https://www.erlang-factory.com/euc2017/stavros-aronis).
10 |
11 | The slides are [here](https://goo.gl/Mhulbn).
12 |
--------------------------------------------------------------------------------
/docs/_posts/2017-10-03-publications-update.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Recent Publications and Homepage"
4 | category: news
5 | redirect_from: /publications-update.html
6 | ---
7 |
8 | The [Publications](/publications) page was updated with some recent publications.
9 |
10 | The [Homepage](/) was extended with more info.
11 |
--------------------------------------------------------------------------------
/docs/_posts/2017-11-06-Announcing-Mailing-List.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Announcing a Mailing List"
4 | category: news
5 | redirect_from: /Announcing-Mailing-List.html
6 | ---
7 |
8 | Concuerror now has a [mailing list](/contact).
9 |
--------------------------------------------------------------------------------
/docs/_posts/2018-07-15-hex.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Available on Hex.pm (with API specification)"
4 | category: news
5 | redirect_from: /hex.html
6 | ---
7 |
8 | Concuerror is now also available via
9 | [Hex.pm](https://hex.pm/packages/concuerror).
10 |
11 | Specification about its API is available on
12 | [Hexdocs](https://hexdocs.pm/concuerror).
13 |
--------------------------------------------------------------------------------
/docs/_posts/2020-10-17-code-beam-sf-2019.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Talk at CODE BEAM SF 2019: Slides"
4 | category: news
5 | redirect_from: /code-beam-sf-2019.html
6 | ---
7 |
8 | Stavros Aronis presented a talk on Concuerror at CODE BEAM 2019.
9 |
10 | You can find more info [here](https://codesync.global/speaker/stavros-aronis/#301modeling-and-verifying-distributed-applications-with-concuerror).
11 |
12 | The slides are [here](/assets/pdf/CodeBEAMSF2019.pdf).
13 |
--------------------------------------------------------------------------------
/docs/_posts/2020-10-17-functional-conf-2018.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: "Talk at Functional Conf 2018: Video and Slides"
4 | category: news
5 | redirect_from: /functional-conf-2018.html
6 | ---
7 |
8 | Stavros Aronis presented a talk on Concuerror at Functional Conf 2018.
9 |
10 | {% assign yt-link = "xAoIn_3b_n8" %}
11 | {% include yt.html %}
12 |
13 | You can find more info [here](https://confengine.com/functional-conf-2018/proposal/8528/conquering-race-conditions-in-erlang-programs-with-concuerror).
14 |
15 | The slides are [here](https://drive.google.com/file/d/11dhg9lG2v1cHpDrgLPcUlVvna39qHVFG/preview?feature=oembed).
16 |
--------------------------------------------------------------------------------
/docs/assets/pdf/CodeBEAMSF2019.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parapluu/Concuerror/7acf5fd312f51dbdc51e824efec519fa051c979e/docs/assets/pdf/CodeBEAMSF2019.pdf
--------------------------------------------------------------------------------
/docs/assets/pdf/ICST2013.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parapluu/Concuerror/7acf5fd312f51dbdc51e824efec519fa051c979e/docs/assets/pdf/ICST2013.pdf
--------------------------------------------------------------------------------
/docs/assets/pdf/iFM2017.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parapluu/Concuerror/7acf5fd312f51dbdc51e824efec519fa051c979e/docs/assets/pdf/iFM2017.pdf
--------------------------------------------------------------------------------
/docs/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parapluu/Concuerror/7acf5fd312f51dbdc51e824efec519fa051c979e/docs/images/favicon.ico
--------------------------------------------------------------------------------
/docs/images/site-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/parapluu/Concuerror/7acf5fd312f51dbdc51e824efec519fa051c979e/docs/images/site-logo.png
--------------------------------------------------------------------------------
/docs/news.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: posts
3 | permalink: /news/index.html
4 | title: News
5 | description: "Links to all posts on this website, sorted by date."
6 | show_excerpts: false
7 | ---
8 |
--------------------------------------------------------------------------------
/docs/search.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: search
3 | permalink: /search/index.html
4 | title: Search
5 | description: "Search Concuerror's website"
6 | ---
7 |
--------------------------------------------------------------------------------
/docs/sitemap.xml:
--------------------------------------------------------------------------------
1 | ---
2 | layout: null
3 | ---
4 |
5 |
6 |
7 | {{ site.url }}
8 |
9 |
10 | {% for post in site.posts %}
11 |
12 | {{ site.url }}{{ post.url }}
13 |
14 | {% endfor %}
15 |
16 |
--------------------------------------------------------------------------------
/docs/tutorials.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: category
3 | permalink: /tutorials/index.html
4 | title: Tutorials
5 | description: "Links to tutorials on how to use Concuerror, sorted by date."
6 | show_excerpts: false
7 | taxonomy: tutorials
8 | ---
9 |
10 | This is a list of tutorials on how to use Concuerror.
11 | If you are looking for documentation, check the
12 | [API](https://hexdocs.pm/concuerror).
13 |
--------------------------------------------------------------------------------
/priv/generate_option_docfiles:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env escript
2 | %%! -noshell -pa _build/docs/lib/concuerror/ebin
3 |
4 | main(Dir) ->
5 | concuerror_options:generate_option_docfiles(Dir).
6 |
--------------------------------------------------------------------------------
/rebar.lock:
--------------------------------------------------------------------------------
1 | {"1.2.0",
2 | [{<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.1">>},0}]}.
3 | [
4 | {pkg_hash,[
5 | {<<"getopt">>, <<"C73A9FA687B217F2FF79F68A3B637711BB1936E712B521D8CE466B29CBF7808A">>}]},
6 | {pkg_hash_ext,[
7 | {<<"getopt">>, <<"53E1AB83B9CEB65C9672D3E7A35B8092E9BDC9B3EE80721471A161C10C59959C">>}]}
8 | ].
9 |
--------------------------------------------------------------------------------
/resources/DPOR_paper_material/foo.erl:
--------------------------------------------------------------------------------
1 | -module(foo).
2 |
3 | -export([foo/0]).
4 |
5 | foo() ->
6 | P = self(),
7 | spawn(fun() -> P ! a end),
8 | spawn(fun() -> P ! b end),
9 | spawn(fun() -> P ! c end),
10 | receive
11 | V -> V
12 | after
13 | 0 -> bloo
14 | end.
15 |
--------------------------------------------------------------------------------
/resources/DPOR_paper_material/foobar.erl:
--------------------------------------------------------------------------------
1 | -module(foobar).
2 |
3 | -export([foo/0]).
4 |
5 | foo() ->
6 | bar().
7 |
8 | bar() ->
9 | ok.
10 |
--------------------------------------------------------------------------------
/resources/DPOR_paper_material/my_test.erl:
--------------------------------------------------------------------------------
1 | -module(my_test).
2 |
3 | -export([test/1]).
4 |
5 | test(small) ->
6 | foo_test();
7 | test(large) ->
8 | foobar_test().
9 |
10 | foo_test() ->
11 | dialyzer:run([{files, ["/home/stavros/git/Concuerror/resources/DPOR_paper_material/foo.erl"]}, {from, src_code}]).
12 |
13 | foobar_test() ->
14 | dialyzer:run([{files, ["/home/stavros/git/Concuerror/foobar.erl"]}, {from, src_code}]).
15 |
--------------------------------------------------------------------------------
/resources/DPOR_paper_material/run_dialyzer.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | echo "\\hline"
4 | for i in small large; do
5 | f=0
6 | for t in --dpor --dpor_source --dpor_classic; do
7 | if [ $f -eq 0 ]; then
8 | echo "\multirow{3}{*}{$T} & \multirow{3}{*}{$i} & "
9 | echo -n " o-DPOR &"
10 | elif [ $f -eq 1 ]; then
11 | echo -n " & & s-DPOR &"
12 | else
13 | echo -n " & & DPOR &"
14 | fi
15 | f=$((f+1))
16 | ./conc_dia.sh $i $t | grep "OUT" | sed 's/OUT//'
17 | done
18 | echo "\\hline"
19 | done
--------------------------------------------------------------------------------
/resources/DPOR_paper_material/run_filesystem.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | T=file_system_example
4 |
5 | echo "\\hline"
6 | for i in 16 18; do
7 | f=0
8 | for t in --dpor --dpor_source --dpor_classic; do
9 | if [ $f -eq 0 ]; then
10 | echo "\multirow{3}{*}{file\_system} & \multirow{3}{*}{$i} & "
11 | echo -n " o-DPOR &"
12 | elif [ $f -eq 1 ]; then
13 | echo -n " & & s-DPOR &"
14 | else
15 | echo -n " & & DPOR &"
16 | fi
17 | f=$((f+1))
18 | ./concuerror_mem --noprogress -f testsuite/suites/dpor/src/$T.erl \
19 | -t $T main $i -p inf $t \
20 | | grep "OUT" | sed 's/OUT//'
21 | done
22 | echo "\\hline"
23 | done
--------------------------------------------------------------------------------
/resources/DPOR_paper_material/run_indexer.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | T=indexer_example
4 |
5 | echo "\\hline"
6 | for i in 12 15; do
7 | f=0
8 | for t in --dpor --dpor_source --dpor_classic; do
9 | if [ $f -eq 0 ]; then
10 | echo "\multirow{3}{*}{$T} & \multirow{3}{*}{$i} & "
11 | echo -n " o-DPOR &"
12 | elif [ $f -eq 1 ]; then
13 | echo -n " & & s-DPOR &"
14 | else
15 | echo -n " & & DPOR &"
16 | fi
17 | f=$((f+1))
18 | ./concuerror_mem --noprogress -f testsuite/suites/dpor/src/$T.erl \
19 | -t $T main $i -p inf $t \
20 | | grep "OUT" | sed 's/OUT//'
21 | done
22 | echo "\\hline"
23 | done
--------------------------------------------------------------------------------
/resources/DPOR_paper_material/run_last_zero.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | T=sleeping_races_8
4 |
5 | echo "\\hline"
6 | for i in 2 5 10; do
7 | f=0
8 | for t in --dpor --dpor_source --dpor_classic; do
9 | if [ $f -eq 0 ]; then
10 | echo "\multirow{3}{*}{last_zero} & \multirow{3}{*}{$i} & "
11 | echo -n " o-DPOR &"
12 | elif [ $f -eq 1 ]; then
13 | echo -n " & & s-DPOR &"
14 | else
15 | echo -n " & & DPOR &"
16 | fi
17 | f=$((f+1))
18 | ./concuerror_mem --noprogress -f testsuite/suites/dpor/src/$T.erl \
19 | -t $T $T $i -p inf $t \
20 | | grep "OUT" | sed 's/OUT//'
21 | done
22 | echo "\\hline"
23 | done
--------------------------------------------------------------------------------
/resources/DPOR_paper_material/run_readers.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | T=readers
4 |
5 | echo "\\hline"
6 | for i in 2 8; do
7 | f=0
8 | for t in --dpor --dpor_source --dpor_classic; do
9 | if [ $f -eq 0 ]; then
10 | echo "\multirow{3}{*}{$T} & \multirow{3}{*}{$i} & "
11 | echo -n " o-DPOR &"
12 | elif [ $f -eq 1 ]; then
13 | echo -n " & & s-DPOR &"
14 | else
15 | echo -n " & & DPOR &"
16 | fi
17 | f=$((f+1))
18 | ./concuerror_mem --noprogress -f testsuite/suites/dpor/src/$T.erl \
19 | -t $T $T $i -p inf $t \
20 | | grep "OUT" | sed 's/OUT//'
21 | done
22 | echo "\\hline"
23 | done
--------------------------------------------------------------------------------
/resources/DPOR_paper_material/run_rush_hour.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | T=rush_hour
4 |
5 | echo "\\hline"
6 | for i in -; do
7 | f=0
8 | for t in --dpor --dpor_source --dpor_classic; do
9 | if [ $f -eq 0 ]; then
10 | echo "\multirow{3}{*}{rush\_hour} & \multirow{3}{*}{$i} & "
11 | echo -n " o-DPOR &"
12 | elif [ $f -eq 1 ]; then
13 | echo -n " & & s-DPOR &"
14 | else
15 | echo -n " & & DPOR &"
16 | fi
17 | f=$((f+1))
18 | ./concuerror_mem --noprogress -f testsuite/suites/resources/src/manolis/*.erl \
19 | -t rush_hour test_2workers_benchmark -p inf $t | \
20 | grep "OUT" | sed 's/OUT//'
21 | done
22 | echo "\\hline"
23 | done
--------------------------------------------------------------------------------
/resources/syntax/block_after.erl:
--------------------------------------------------------------------------------
1 | %%%----------------------------------------------------------------------
2 | %%% File : block_after.erl
3 | %%% Authors : Alkis Gotovos
4 | %%% Maria Christakis
5 | %%% Description : Test block expression in after clause
6 | %%% Created : 3 Jan 2010
7 | %%%----------------------------------------------------------------------
8 |
9 | -module(block_after).
10 |
11 | -export([block_after_test/0]).
12 |
13 | block_after_test() ->
14 | receive
15 | _Any -> ok
16 | after 42 ->
17 | foo,
18 | bar
19 | end.
20 |
--------------------------------------------------------------------------------
/resources/syntax/rec_uscore.erl:
--------------------------------------------------------------------------------
1 | %%%----------------------------------------------------------------------
2 | %%% File : rec_uscore.erl
3 | %%% Authors : Alkis Gotovos
4 | %%% Maria Christakis
5 | %%% Description : Test underscore in record creation
6 | %%% Created : 3 Jan 2010
7 | %%%----------------------------------------------------------------------
8 |
9 | -module(rec_uscore).
10 |
11 | -export([rec_uscore_test/0]).
12 |
13 | -record(test, {foo :: integer(), bar :: atom(), baz :: atom()}).
14 |
15 | rec_uscore_test() ->
16 | _Rec = #test{foo = 42, _ = '_'}.
17 |
--------------------------------------------------------------------------------
/resources/tdd/reg_server.hrl:
--------------------------------------------------------------------------------
1 | -define(MAX_ATTACHED, 2).
2 |
--------------------------------------------------------------------------------
/src/.gitignore:
--------------------------------------------------------------------------------
1 | concuerror_otp_version.hrl
2 |
--------------------------------------------------------------------------------
/src/concuerror.app.src:
--------------------------------------------------------------------------------
1 | {application, concuerror,
2 | [ {description,
3 | "Concuerror: Stateless Model Checking tool for Erlang programs"
4 | }
5 | , {vsn, "git"}
6 | , {applications, [kernel, stdlib]}
7 | , {maintainers,
8 | [ "Stavros Aronis"
9 | , "Kostis Sagonas"
10 | ]}
11 | , {licenses, ["BSD-2-Clause"]}
12 | , {links,
13 | [ {"Github", "https://github.com/parapluu/Concuerror"}
14 | , {"Website", "http://parapluu.github.io/Concuerror"}
15 | ]}
16 | ]}.
17 |
--------------------------------------------------------------------------------
/test/README.md:
--------------------------------------------------------------------------------
1 | # Concuerror's EUnit tests
2 |
3 | This directory contains tests that can be run by Rebar,
4 | e.g. `rebar3 eunit` (from the top directory).
5 |
--------------------------------------------------------------------------------
/test/concuerror_options_tests.erl:
--------------------------------------------------------------------------------
1 | -module(concuerror_options_tests).
2 |
3 | -include_lib("eunit/include/eunit.hrl").
4 |
5 | -define(M, concuerror_options).
6 |
7 | %%==============================================================================
8 |
9 | lint_option_specs_test_() ->
10 | LintSpec =
11 | fun(OptionSpec) ->
12 | fun() ->
13 | {Keywords, _} = ?M:get_keywords_and_related(OptionSpec),
14 | OptionName = element(1, OptionSpec),
15 | ?assertEqual(
16 | {OptionName, Keywords},
17 | {OptionName, lists:usort(Keywords)}
18 | )
19 | end
20 | end,
21 | lists:map(LintSpec, ?M:options()).
22 |
--------------------------------------------------------------------------------
/tests-real/Makefile:
--------------------------------------------------------------------------------
1 | SUBDIRS=$(patsubst %Makefile,%,$(wildcard suites/*/Makefile))
2 |
3 | .PHONY: all $(SUBDIRS)
4 |
5 | all: $(SUBDIRS)
6 |
7 | $(SUBDIRS):
8 | $(MAKE) -C $@
9 |
--------------------------------------------------------------------------------
/tests-real/README.md:
--------------------------------------------------------------------------------
1 | # Concuerror's 'real tests' suite
2 |
3 | ## Structure
4 |
5 | This testsuite contains a number of suites, each following its own
6 | logic.
7 |
8 | Suites are structured in the following way:
9 | `./suites/`
10 |
11 | Each suite has a `Makefile` whose default target should run all tests
12 | in the suite.
13 |
14 | ## How to run all the tests
15 |
16 | From Concuerror's main directory, execute `make tests-real`.
17 |
--------------------------------------------------------------------------------
/tests-real/suites/erlang-litmus/.gitignore:
--------------------------------------------------------------------------------
1 | erlang-concurrency-litmus-tests
2 |
--------------------------------------------------------------------------------
/tests-real/suites/erlang-litmus/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: test
2 |
3 | test: erlang-concurrency-litmus-tests
4 | ./test etsglobal
5 | ./test leader
6 | ./test link
7 | ./test mailbox
8 | ./test process
9 | ./test registry
10 | ./test signal
11 | ./test timer
12 |
13 | erlang-concurrency-litmus-tests:
14 | git clone https://github.com/aronisstav/erlang-concurrency-litmus-tests.git
15 |
--------------------------------------------------------------------------------
/tests-real/suites/erlang-litmus/test:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | REPO="erlang-concurrency-litmus-tests"
4 |
5 | CONCUERROR=${CONCUERROR:-$(which concuerror)}
6 |
7 | . ../print_colors
8 |
9 | function abort {
10 | cat *.out
11 | print_red "FAILED"
12 | }
13 |
14 | if ! ../check_version.escript 18; then
15 | print_blue "SKIPPING"
16 | exit 0
17 | fi
18 |
19 | set -e
20 | trap 'abort' 0
21 |
22 | print_blue "Litmus Suite $1"
23 |
24 | cd $REPO/litmus
25 |
26 | ../../run_litmus.escript $1
27 |
28 | trap - 0
29 |
30 | print_green "SUCCESS!"
31 |
--------------------------------------------------------------------------------
/tests-real/suites/gproc/.gitignore:
--------------------------------------------------------------------------------
1 | run
2 | gproc
3 |
--------------------------------------------------------------------------------
/tests-real/suites/gproc/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: test
2 |
3 | test: gproc/ebin/gproc.beam run
4 | ./test
5 |
6 | gproc/ebin/gproc.beam: gproc
7 | $(MAKE) -C gproc
8 |
9 | gproc:
10 | git clone https://github.com/uwiger/gproc.git -b 0.3
11 |
12 | run:
13 | mkdir $@
14 |
--------------------------------------------------------------------------------
/tests-real/suites/makefile/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: test
2 | test:
3 | ./makefile-tests
4 |
--------------------------------------------------------------------------------
/tests-real/suites/makefile/footer:
--------------------------------------------------------------------------------
1 | ../options/footer
--------------------------------------------------------------------------------
/tests-real/suites/makefile/header:
--------------------------------------------------------------------------------
1 | ../options/header
--------------------------------------------------------------------------------
/tests-real/suites/options/.gitignore:
--------------------------------------------------------------------------------
1 | console
2 |
--------------------------------------------------------------------------------
/tests-real/suites/options/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: test
2 | test: options other
3 |
4 | .PHONY: options
5 | options:
6 | ./option1-tests
7 | ./option2-tests
8 | ./option3-tests
9 |
10 | .PHONY: other
11 | other:
12 | ./autocomplete-tests
13 | ./other-tests
14 |
--------------------------------------------------------------------------------
/tests-real/suites/options/autocomplete/autocomplete.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # load bash-completion functions
4 | source $(dirname $0)/../../../../resources/bash_completion/concuerror
5 |
6 | COMP_WORDS=("$1" "$2")
7 | COMP_CWORD=1
8 |
9 | _concuerror ignored "$2" "$1"
10 |
11 | echo ${COMPREPLY[@]}
12 |
--------------------------------------------------------------------------------
/tests-real/suites/options/autocomplete/autocomplete_help.erl:
--------------------------------------------------------------------------------
1 | -module(autocomplete_help).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | OptionSpec = concuerror_options:options(),
7 | OptsRaw = [Keywords || {_, Keywords, _, _, _, _} <- OptionSpec],
8 | Opts = lists:usort(lists:append([[all, progress, attributes] | OptsRaw])),
9 | Keywords = [atom_to_list(K) || K <- Opts],
10 | autocomplete_common:test("./autocomplete.sh --help ''", Keywords, [no_sort_check]).
11 |
--------------------------------------------------------------------------------
/tests-real/suites/options/autocomplete/autocomplete_long.erl:
--------------------------------------------------------------------------------
1 | -module(autocomplete_long).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | OptionSpec = concuerror_options:options(),
7 | OptsRaw = ["--" ++ atom_to_list(Long) || {Long, _, _, _, _, _} <- OptionSpec],
8 | Opts = lists:sort(OptsRaw),
9 | autocomplete_common:test("./autocomplete.sh concuerror --", Opts).
10 |
--------------------------------------------------------------------------------
/tests-real/suites/options/autocomplete/autocomplete_short.erl:
--------------------------------------------------------------------------------
1 | -module(autocomplete_short).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | OptionSpec = concuerror_options:options(),
7 | OptsRaw = ["-" ++ [Short] || {_, _, Short, _, _, _} <- OptionSpec, Short =/= undefined],
8 | Opts = lists:sort(OptsRaw),
9 | autocomplete_common:test("./autocomplete.sh concuerror -", Opts).
10 |
--------------------------------------------------------------------------------
/tests-real/suites/options/footer:
--------------------------------------------------------------------------------
1 | trap - ERR
2 |
3 | print_green "SUCCESS"
4 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/bad.erl:
--------------------------------------------------------------------------------
1 | -module(bad).
2 |
3 | -export([test/1). %% This has a typo and won't compile.
4 |
5 | test() ->
6 | ok.
7 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/bad_attribute.erl:
--------------------------------------------------------------------------------
1 | -module(bad_attribute).
2 |
3 | -export([test/0]).
4 |
5 | -concuerror_options(unknown_unknown).
6 |
7 | test() ->
8 | ok.
9 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/bad_attribute_1.erl:
--------------------------------------------------------------------------------
1 | -module(bad_attribute_1).
2 |
3 | -export([test/0]).
4 |
5 | -concuerror_options(unknown_unknown).
6 |
7 | test() ->
8 | ok.
9 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/bad_attribute_2.erl:
--------------------------------------------------------------------------------
1 | -module(bad_attribute_2).
2 |
3 | -export([test/0]).
4 |
5 | -concuerror_options_forced(version).
6 |
7 | test() ->
8 | ok.
9 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/bad_attribute_3.erl:
--------------------------------------------------------------------------------
1 | -module(bad_attribute_3).
2 |
3 | -export([test/0]).
4 |
5 | -concuerror_options([symbolic_names, keep_going, keep_going]).
6 |
7 | test() ->
8 | ok.
9 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/bad_attribute_4.erl:
--------------------------------------------------------------------------------
1 | -module(bad_attribute_4).
2 |
3 | -export([test/0]).
4 |
5 | -concuerror_options_forced([keep_going, keep_going]).
6 |
7 | test() ->
8 | ok.
9 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/bad_attribute_5.erl:
--------------------------------------------------------------------------------
1 | -module(bad_attribute_4).
2 |
3 | -export([test/0]).
4 |
5 | -concuerror_options_forced(keep_going).
6 | -concuerror_options(keep_going).
7 |
8 | test() ->
9 | ok.
10 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/debug_works.erl:
--------------------------------------------------------------------------------
1 | -module(debug_works).
2 |
3 | -export([test/0]).
4 |
5 | -ifndef(N).
6 | -define(N, 2).
7 | -endif.
8 |
9 | test() ->
10 | test(?N).
11 |
12 | test(N) ->
13 | P = self(),
14 | Fun = fun() -> P ! self() end,
15 | [spawn(Fun) || _ <- lists:seq(1, N)],
16 | receive
17 | _ -> ok
18 | end.
19 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/excluded.erl:
--------------------------------------------------------------------------------
1 | -module(excluded).
2 |
3 | -export([foo/0]).
4 |
5 | foo() ->
6 | P = self(),
7 | spawn(fun() -> P ! msg1 end),
8 | spawn(fun() -> P ! msg2 end),
9 | receive
10 | _ ->
11 | receive
12 | _ ->
13 | ok
14 | end
15 | end.
16 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/excluding.erl:
--------------------------------------------------------------------------------
1 | -module(excluding).
2 |
3 | -export([test/0]).
4 |
5 | -export([scenarios/0]).
6 |
7 | -concuerror_options_forced([{ignore_error, deadlock}]).
8 |
9 | %%------------------------------------------------------------------------------
10 |
11 | scenarios() -> [{test, inf, optimal}].
12 |
13 | %%------------------------------------------------------------------------------
14 |
15 | test() ->
16 | excluded:foo(),
17 | receive after infinity -> ok end.
18 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/first_and_other_deadlock.erl:
--------------------------------------------------------------------------------
1 | -module(first_and_other_deadlock).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | CoinFlip =
7 | fun(Fun) ->
8 | fun() ->
9 | Palm = self(),
10 | spawn(fun() -> Palm ! coin end),
11 | receive
12 | coin -> Fun()
13 | after
14 | 0 -> ok
15 | end
16 | end
17 | end,
18 | MessageWaiter =
19 | fun() ->
20 | receive
21 | ok -> ok
22 | end
23 | end,
24 | P = self(),
25 | MaybeDeadlock = spawn(MessageWaiter),
26 | CoinForNever = spawn(CoinFlip(fun() -> P ! ok end)),
27 | CoinForMaybe = spawn(CoinFlip(fun() -> MaybeDeadlock ! ok end)),
28 | MessageWaiter().
29 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/foo.erl:
--------------------------------------------------------------------------------
1 | -module(foo).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | ok.
7 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/from_shell.erl:
--------------------------------------------------------------------------------
1 | -module(from_shell).
2 |
3 | -export([ with_unknown/0
4 | , with_bad_entry/0
5 | , with_multiple_entries/0
6 | ]).
7 |
8 | %%==============================================================================
9 |
10 | with_unknown() ->
11 | fail = concuerror:run([unknown_option]).
12 |
13 | with_bad_entry() ->
14 | fail = concuerror:run([{entry_point, ugly}]).
15 |
16 | with_multiple_entries() ->
17 | fail = concuerror:run([{entry_point, one}, {entry_point, another}]).
18 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/load_nif.erl:
--------------------------------------------------------------------------------
1 | -module(load_nif).
2 | -export([test/0]).
3 |
4 | -on_load(init/0).
5 |
6 | init() ->
7 | catch erlang:load_nif("", no),
8 | ok.
9 |
10 | test() ->
11 | ok.
12 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/other_deadlock.erl:
--------------------------------------------------------------------------------
1 | -module(other_deadlock).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | CoinFlip =
7 | fun(Fun) ->
8 | fun() ->
9 | Palm = self(),
10 | spawn(fun() -> Palm ! coin end),
11 | receive
12 | coin -> Fun()
13 | after
14 | 0 -> ok
15 | end
16 | end
17 | end,
18 | MessageWaiter =
19 | fun() ->
20 | receive
21 | ok -> ok
22 | end
23 | end,
24 | P = self(),
25 | MaybeDeadlock = spawn(MessageWaiter),
26 | CoinForNever = spawn(fun() -> P ! ok end),
27 | CoinForMaybe = spawn(CoinFlip(fun() -> MaybeDeadlock ! ok end)),
28 | MessageWaiter().
29 |
--------------------------------------------------------------------------------
/tests-real/suites/options/src/six.erl:
--------------------------------------------------------------------------------
1 | -module(six).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | P = self(),
7 | F = fun(M) -> fun() -> P ! M end end,
8 | spawn(F(a)),
9 | spawn(F(b)),
10 | spawn(F(c)),
11 | _ = receive _ -> ok end,
12 | _ = receive _ -> ok end,
13 | _ = receive _ -> ok end.
14 |
--------------------------------------------------------------------------------
/tests-real/suites/output/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: test
2 | test:
3 | ./output-tests
4 |
--------------------------------------------------------------------------------
/tests-real/suites/output/footer:
--------------------------------------------------------------------------------
1 | ../options/footer
--------------------------------------------------------------------------------
/tests-real/suites/output/header:
--------------------------------------------------------------------------------
1 | ../options/header
--------------------------------------------------------------------------------
/tests-real/suites/output/src/a_fun.erl:
--------------------------------------------------------------------------------
1 | -module(a_fun).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | ThisIsAFun = fun() -> exit(error) end,
7 | P1 = spawn(fun() -> receive F -> F() end end),
8 | P1 ! ThisIsAFun.
9 |
--------------------------------------------------------------------------------
/tests-real/suites/output/src/buggy.erl:
--------------------------------------------------------------------------------
1 | -module(buggy).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | P = self(),
7 | spawn(fun() -> P ! foo end),
8 | spawn(fun() -> P ! bar end),
9 | receive
10 | Msg ->
11 | true = Msg =:= foo
12 | end.
13 |
--------------------------------------------------------------------------------
/tests-real/suites/output/src/deadlock.erl:
--------------------------------------------------------------------------------
1 | -module(deadlock).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | P = self(),
7 | spawn(fun() -> P ! foo end),
8 | receive
9 | bar -> ok
10 | end.
11 |
--------------------------------------------------------------------------------
/tests-real/suites/output/src/harmless_exit.erl:
--------------------------------------------------------------------------------
1 | -module(harmless_exit).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | process_flag(trap_exit, true),
7 | spawn_link(fun() -> exit(abnormal) end),
8 | receive
9 | _ -> ok
10 | end.
11 |
--------------------------------------------------------------------------------
/tests-real/suites/output/src/many_scheds.erl:
--------------------------------------------------------------------------------
1 | -module(many_scheds).
2 |
3 | -concuerror_options([{ignore_error, deadlock}]).
4 |
5 | -export([test/0, test_large/0]).
6 |
7 | test() ->
8 | test(6).
9 |
10 | test_large() ->
11 | test(10).
12 |
13 | test(N) ->
14 | ets:new(table, [public, named_table]),
15 | Fun =
16 | fun() ->
17 | ets:insert(table, {key, self()})
18 | end,
19 | [spawn(Fun) || _ <- lists:seq(1, N)],
20 | receive after infinity -> ok end.
21 |
--------------------------------------------------------------------------------
/tests-real/suites/output/src/more_stacktrace.erl:
--------------------------------------------------------------------------------
1 | -module(more_stacktrace).
2 |
3 | -export([test/0, do_not_blame_me/0]).
4 |
5 | test() ->
6 | erlang:diplay().
7 |
8 | do_not_blame_me() ->
9 | self() ! ok,
10 | exit(abnormal).
11 |
--------------------------------------------------------------------------------
/tests-real/suites/output/src/race_info.erl:
--------------------------------------------------------------------------------
1 | -module(race_info).
2 |
3 | -export([test/0]).
4 |
5 | test() ->
6 | P = self(),
7 | spawn(fun() -> P ! foo end),
8 | receive
9 | foo -> ok
10 | after
11 | 0 -> ok
12 | end.
13 |
--------------------------------------------------------------------------------
/tests-real/suites/output/src/register.erl:
--------------------------------------------------------------------------------
1 | -module(register).
2 |
3 | -export([test/0]).
4 |
5 | -concuerror_options_forced([symbolic_names]).
6 |
7 | test() ->
8 | spawn(fun() ->
9 | register(foo, self()),
10 | exit(abnormal)
11 | end).
12 |
--------------------------------------------------------------------------------
/tests-real/suites/poolboy/.gitignore:
--------------------------------------------------------------------------------
1 | poolboy
2 |
--------------------------------------------------------------------------------
/tests-real/suites/poolboy/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: test
2 |
3 | test: poolboy/ebin/poolboy.beam poolboy/.eunit/poolboy_test_worker.beam poolboy/poolboy_tests_1.erl
4 | ./test
5 |
6 | poolboy/ebin/poolboy.beam: poolboy/rebar
7 | $(MAKE) REBAR=./$( /dev/null
11 |
12 | poolboy/poolboy_tests_1.erl: | poolboy
13 | git clone -q https://gist.github.com/b67df16361cd9a2fa87e.git tmp
14 | mv tmp/$(notdir $@) $@
15 | rm -rf tmp
16 |
17 | poolboy/rebar: | poolboy
18 | cd poolboy; curl -O https://raw.githubusercontent.com/wiki/rebar/rebar/rebar; chmod u+x rebar
19 |
20 | poolboy:
21 | git clone -q https://github.com/devinus/poolboy.git --branch 1.2.2
22 |
--------------------------------------------------------------------------------
/tests-real/suites/print_colors:
--------------------------------------------------------------------------------
1 | function print_red {
2 | echo -e "\033[1;31m$1\033[0m"
3 | }
4 |
5 | function print_green {
6 | echo -e "\033[1;32m$1\033[0m"
7 | }
8 |
9 | function print_blue {
10 | echo -e "\033[1;34m$1\033[0m"
11 | }
12 |
--------------------------------------------------------------------------------
/tests/differ:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -o pipefail
4 |
5 | DIFFPRINTER=${DIFFPRINTER:-thediff}
6 |
7 | DIFF=$(mktemp)
8 |
9 | diff \
10 | <(grep " Summary" $1 2> /dev/null || echo empty1) \
11 | <(grep " Summary" $2 2> /dev/null || echo empty2) \
12 | > $DIFF
13 |
14 | if [ "$?" -ne 0 ]; then
15 | echo echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $DIFFPRINTER
16 | echo echo "New result:" >> $DIFFPRINTER
17 | echo "cat $2" >> $DIFFPRINTER
18 | echo echo "Diff from $1:" >> $DIFFPRINTER
19 | echo "cat $DIFF" >> $DIFFPRINTER
20 | exit 1
21 | fi
22 |
--------------------------------------------------------------------------------
/tests/results/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/tests/suites/advanced_tests/src/manolis/good_testcase.txt:
--------------------------------------------------------------------------------
1 | {9,9,{8,3}}, [{33,{{3,4},x,2}},{32,{{2,0},x,2}},{31,{{4,7},x,2}},{30,{{2,8},y,2}},{29,{{7,5},y,2}},{28,{{0,0},y,2}},{27,{{4,0},y,2}},{26,{{0,1},y,2}},{25,{{7,6},y,2}},{24,{{5,3},y,2}},{23,{{2,6},x,2}},{22,{{2,3},y,2}},{21,{{6,8},y,2}},{20,{{5,5},y,2}},{19,{{6,0},y,2}},{18,{{7,1},x,2}},{17,{{0,6},x,2}},{16,{{0,3},x,2}},{15,{{5,1},y,2}},{14,{{1,4},y,2}},{13,{{5,6},y,2}},{12,{{7,3},x,2}},{11,{{1,6},x,2}},{10,{{0,8},y,2}},{9,{{5,7},x,2}},{8,{{4,5},x,2}},{7,{{1,5},y,2}},{6,{{4,2},y,2}},{5,{{1,2},y,2}},{4,{{3,0},x,2}},{3,{{3,6},x,2}},{2,{{4,4},y,2}},{1,{{6,7},y,2}},{0,{{8,7},x,2}}]
2 |
--------------------------------------------------------------------------------
/tests/suites/advanced_tests/src/manolis/test.erl:
--------------------------------------------------------------------------------
1 | -module(test).
2 |
3 | -export([scenarios/0]).
4 | -export([test_2workers/0, test_2workers_small/0]).
5 |
6 | -concuerror_options_forced([{instant_delivery, false}, {scheduling, oldest}]).
7 |
8 | scenarios() ->
9 | [{test_2workers_small, inf, dpor}].
10 |
11 | test_2workers() ->
12 | rush_hour:test_2workers().
13 |
14 | test_2workers_small() ->
15 | rush_hour:test_2workers_small().
16 |
--------------------------------------------------------------------------------
/tests/suites/advanced_tests/src/shootout/test.erl:
--------------------------------------------------------------------------------
1 | -module(test).
2 |
3 | -export([scenarios/0]).
4 | -export([test1/0]).
5 |
6 | scenarios() ->
7 | [{test1, inf, dpor}].
8 |
9 | test1() ->
10 | thread_ring:test1().
11 |
--------------------------------------------------------------------------------
/tests/suites/advanced_tests/src/source_killer.erl:
--------------------------------------------------------------------------------
1 | -module(source_killer).
2 |
3 | -export([test/0]).
4 | -export([scenarios/0]).
5 |
6 | -concuerror_options_forced([{ignore_error, deadlock}]).
7 |
8 | scenarios() -> [{test, inf, T} || T <- [source, dpor]].
9 |
10 | test() ->
11 | ets:new(table, [public, named_table]),
12 | P = spawn(fun() -> ets:lookup(table, v), ets:lookup(table, k) end),
13 | spawn(fun() -> ets:insert(table, {k,1}) end),
14 | spawn(fun() -> ets:lookup(table, k), exit(P, kill) end),
15 | receive after infinity -> ok end.
16 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/ets_new-test-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 8 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {{badmatch,2},
6 | [{ets_new,child,0,[{file,"ets_new.erl"},{line,32}]}]}
7 | Process P1 spawns process P1.1
8 | Process P1: ets_new {table,[named_table,public]}
9 | Process P1.1: ets_info {table}
10 | Process P1.1 exits ("Exception")
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/exit-test1-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 5 interleaving(s). 2 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 sends an exit signal to "P1.1" (normal)
8 | Process P1 exits (normal)
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 blocks
11 |
12 |
13 | 2
14 | Error type : Deadlock
15 | Blocked processes : P1.1
16 | Process P1 spawns process P1.1
17 | Process P1 sends an exit signal to "P1.1" (normal)
18 | Process P1.1 sets flag `trap_exit` to `true`
19 | Process P1.1 blocks
20 | Process P1 exits (normal)
21 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/exit-test2-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {foo,[]}
6 | Process P1 spawns process P1.1
7 | Process P1 sends an exit signal to "P1.1" (foo)
8 | Process P1.1: error [exit,foo,[]]
9 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/exit-test3-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 2 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {killed,[]}
6 | Process P1 spawns process P1.1
7 | Process P1 sends an exit signal to "P1.1" (kill)
8 | Process P1.1: error [exit,killed,[]]
9 |
10 |
11 | 2
12 | Error type : Exception
13 | Details : {killed,[]}
14 | Process P1 spawns process P1.1
15 | Process P1.1 sets flag `trap_exit` to `true`
16 | Process P1.1 blocks
17 | Process P1 sends an exit signal to "P1.1" (kill)
18 | Process P1.1: error [exit,killed,[]]
19 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/init_race_condition-test-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 224 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/instr_apply-test-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[{erlang,register,[test,<0.52.0>],[]}]}
6 | Process P1 spawns process P1.1
7 | Process P1.1 exits (normal)
8 | Process P1 registers process P1.1 (dead) as `test`
9 | Process P1 exits ("Exception")
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/normal_exit-normal_exit-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | Concuerror started with options:
3 | [{'after-timeout',infinite},
4 | {assume_racing,false},
5 | {files,["/home/stavros/git/Concuerror/tests/suites/basic_tests/src/normal_exit.erl"]},
6 | {normal_exit,[normal]},
7 | {symbolic,true},
8 | {target,{normal_exit,normal_exit,[]}},
9 | {verbose,0},
10 | {wait,2000}]
11 | ################################################################################
12 | No errors found!
13 | ################################################################################
14 | Done! (Exit status: completed)
15 | Summary: 0 errors, 1/1 interleavings explored
16 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/process_info-test2-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | Summary: 3 errors, 3/3 interleavings explored
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_receive_exit-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_receive_exit-0.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_receive_exit-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_receive_exit-1.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_receive_exit-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_receive_exit-2.txt:
--------------------------------------------------------------------------------
1 | Checked 5 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_receive_exit-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 5 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-0.txt:
--------------------------------------------------------------------------------
1 | Checked 8 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-1.txt:
--------------------------------------------------------------------------------
1 | Checked 44 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-2.txt:
--------------------------------------------------------------------------------
1 | Checked 136 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-3-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-3.txt:
--------------------------------------------------------------------------------
1 | Checked 275 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-4-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-4.txt:
--------------------------------------------------------------------------------
1 | Checked 392 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-5-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-5.txt:
--------------------------------------------------------------------------------
1 | Checked 458 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-6-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-6.txt:
--------------------------------------------------------------------------------
1 | Checked 481 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-7-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-7.txt:
--------------------------------------------------------------------------------
1 | Checked 483 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_3_proc_send_receive-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 483 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_after_clause_preemption-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_after_clause_preemption-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_halt_0-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_halt_0-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_halt_0-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_halt_1-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_halt_1-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_halt_1-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_receive_exit-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 exits (normal)
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 blocks
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_receive_exit-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 exits (normal)
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 blocks
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_receive_exit-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 exits (normal)
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 blocks
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_receive_exit-1.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 exits (normal)
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 blocks
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_receive_exit-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 exits (normal)
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 blocks
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_unlink-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 unlinks from process P1.1
9 | Process P1 blocks
10 | Process P1.1 sets flag `trap_exit` to `true`
11 | Process P1.1 sends message `foo` to process P1
12 | Process P1.1 blocks
13 | Process P1 receives message `foo` from process P1.1
14 | Process P1 exits (normal)
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_unlink-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 unlinks from process P1.1
9 | Process P1 blocks
10 | Process P1.1 sets flag `trap_exit` to `true`
11 | Process P1.1 sends message `foo` to process P1
12 | Process P1.1 blocks
13 | Process P1 receives message `foo` from process P1.1
14 | Process P1 exits (normal)
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_unlink-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 unlinks from process P1.1
9 | Process P1 blocks
10 | Process P1.1 sets flag `trap_exit` to `true`
11 | Process P1.1 sends message `foo` to process P1
12 | Process P1.1 blocks
13 | Process P1 receives message `foo` from process P1.1
14 | Process P1 exits (normal)
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_unlink-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 unlinks from process P1.1
9 | Process P1 blocks
10 | Process P1.1 sets flag `trap_exit` to `true`
11 | Process P1.1 sends message `foo` to process P1
12 | Process P1.1 blocks
13 | Process P1 receives message `foo` from process P1.1
14 | Process P1 exits (normal)
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_link_unlink-3-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 links to process P1.1
8 | Process P1 unlinks from process P1.1
9 | Process P1 blocks
10 | Process P1.1 sets flag `trap_exit` to `true`
11 | Process P1.1 sends message `foo` to process P1
12 | Process P1.1 blocks
13 | Process P1 receives message `foo` from process P1.1
14 | Process P1 exits (normal)
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_monitor_unexisting-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_monitor_unexisting-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_monitor_unexisting-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:398
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 spawns process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 monitors process P1.1 (dead)
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_monitor_unexisting-1.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:398
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 spawns process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 monitors process P1.1 (dead)
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_monitor_unexisting-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:398
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 spawns process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 monitors process P1.1 (dead)
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_monitor_unexisting-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:398
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 spawns process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 monitors process P1.1 (dead)
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_nested_send_receive_block_twice-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_nested_send_receive_block_twice-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_nested_send_receive_block_twice-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_nested_send_receive_block_twice-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_nested_send_receive_block_twice-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_nested_send_receive_block_twice-2.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_2-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1, P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 blocks
8 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_2-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1, P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 blocks
8 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_2-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1, P1.1
6 | Process P1 spawns process P1.1
7 | Process P1 blocks
8 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_block_expr_action-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_block_expr_action-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_block_expr_action-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_infinity_no_patterns-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_infinity_no_patterns-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_infinity_no_patterns-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_infinity_with_pattern-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 blocks
8 | Process P1.1 exits (normal)
9 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_infinity_with_pattern-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 blocks
8 | Process P1.1 exits (normal)
9 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_infinity_with_pattern-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 blocks
8 | Process P1.1 exits (normal)
9 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_no_patterns-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_no_patterns-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_no_patterns-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_no_patterns-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_no_patterns-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_no_patterns-2.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_no_patterns-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_with_pattern-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_with_pattern-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_with_pattern-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:201
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns process P1.1
9 | Process P1.1 sends message `foo` to process P1
10 | Process P1.1 exits (normal)
11 | Process P1 receives message `foo` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_with_pattern-1.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:201
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns process P1.1
9 | Process P1.1 sends message `foo` to process P1
10 | Process P1.1 exits (normal)
11 | Process P1 receives message `foo` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_with_pattern-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:201
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns process P1.1
9 | Process P1.1 sends message `foo` to process P1
10 | Process P1.1 exits (normal)
11 | Process P1 receives message `foo` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_receive_after_with_pattern-3-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:201
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns process P1.1
9 | Process P1.1 sends message `foo` to process P1
10 | Process P1.1 exits (normal)
11 | Process P1 receives message `foo` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_register_unregister-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 registers process P1 as `foo`
7 | Process P1 spawns process P1.1
8 | Process P1 unregisters process `foo`
9 | Process P1 blocks
10 | Process P1.1 sends message `bar` to process named 'foo'
11 | Process P1.1 exits ("Exception")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_register_unregister-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 registers process P1 as `foo`
7 | Process P1 spawns process P1.1
8 | Process P1 unregisters process `foo`
9 | Process P1 blocks
10 | Process P1.1 sends message `bar` to process named 'foo'
11 | Process P1.1 exits ("Exception")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_register_unregister-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 registers process P1 as `foo`
7 | Process P1 spawns process P1.1
8 | Process P1 unregisters process `foo`
9 | Process P1 blocks
10 | Process P1.1 sends message `bar` to process named 'foo'
11 | Process P1.1 exits ("Exception")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_register_unregister-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 registers process P1 as `foo`
7 | Process P1 spawns process P1.1
8 | Process P1 unregisters process `foo`
9 | Process P1 blocks
10 | Process P1.1 sends message `bar` to process named 'foo'
11 | Process P1.1 exits ("Exception")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_register_unregister-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 registers process P1 as `foo`
7 | Process P1 spawns process P1.1
8 | Process P1 unregisters process `foo`
9 | Process P1 blocks
10 | Process P1.1 sends message `bar` to process named 'foo'
11 | Process P1.1 exits ("Exception")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_register_unregister-2.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 registers process P1 as `foo`
7 | Process P1 spawns process P1.1
8 | Process P1 unregisters process `foo`
9 | Process P1 blocks
10 | Process P1.1 sends message `bar` to process named 'foo'
11 | Process P1.1 exits ("Exception")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_register_unregister-3-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 registers process P1 as `foo`
7 | Process P1 spawns process P1.1
8 | Process P1 unregisters process `foo`
9 | Process P1 blocks
10 | Process P1.1 sends message `bar` to process named 'foo'
11 | Process P1.1 exits ("Exception")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_register_unregister-3.txt:
--------------------------------------------------------------------------------
1 | Checked 5 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 registers process P1 as `foo`
7 | Process P1 spawns process P1.1
8 | Process P1 unregisters process `foo`
9 | Process P1 blocks
10 | Process P1.1 sends message `bar` to process named 'foo'
11 | Process P1.1 exits ("Exception")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_register_unregister-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 5 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 registers process P1 as `foo`
7 | Process P1 spawns process P1.1
8 | Process P1 unregisters process `foo`
9 | Process P1 blocks
10 | Process P1.1 sends message `bar` to process named 'foo'
11 | Process P1.1 exits ("Exception")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send-1.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_2-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_2-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_2-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_2-1.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_2-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_3-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_3-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_3-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_3-1.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_3-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive-2.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_2-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_2-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_2-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_2-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_2-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_2-2.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_2-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_3-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_3-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_3-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_3-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_3-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_3-2.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_send_receive_3-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_race-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_race-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_race-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {noproc,[{erlang,link,[<0.55.0>],[]},
6 | {sched_tests,test_spawn_link_race,0,[]}]}
7 | Process P1 spawns process P1.1
8 | Process P1.1 exits (normal)
9 | Process P1 links to process P1.1
10 | Process P1 exits ("Exception")
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_race-1.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {noproc,[{erlang,link,[<0.55.0>],[]},
6 | {sched_tests,test_spawn_link_race,0,[]}]}
7 | Process P1 spawns process P1.1
8 | Process P1.1 exits (normal)
9 | Process P1 links to process P1.1
10 | Process P1 exits ("Exception")
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_race-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {noproc,[{erlang,link,[<0.55.0>],[]},
6 | {sched_tests,test_spawn_link_race,0,[]}]}
7 | Process P1 spawns process P1.1
8 | Process P1.1 exits (normal)
9 | Process P1 links to process P1.1
10 | Process P1 exits ("Exception")
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_receive_exit-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_receive_exit-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_receive_exit-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_receive_exit-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_receive_exit-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 unlinks from process P1.1
8 | Process P1 blocks
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 sends message `foo` to process P1
11 | Process P1.1 blocks
12 | Process P1 receives message `foo` from process P1.1
13 | Process P1 exits (normal)
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 unlinks from process P1.1
8 | Process P1 blocks
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 sends message `foo` to process P1
11 | Process P1.1 blocks
12 | Process P1 receives message `foo` from process P1.1
13 | Process P1 exits (normal)
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 unlinks from process P1.1
8 | Process P1 blocks
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 sends message `foo` to process P1
11 | Process P1.1 blocks
12 | Process P1 receives message `foo` from process P1.1
13 | Process P1 exits (normal)
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns and links to process P1.1
7 | Process P1 unlinks from process P1.1
8 | Process P1 blocks
9 | Process P1.1 sets flag `trap_exit` to `true`
10 | Process P1.1 sends message `foo` to process P1
11 | Process P1.1 blocks
12 | Process P1 receives message `foo` from process P1.1
13 | Process P1 exits (normal)
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_2-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_2-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_2-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_2-1.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_2-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_3-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_3-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_3-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:343
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 sets flag `trap_exit` to `true`
9 | Process P1 spawns and links to process P1.1
10 | Process P1.1 exits (normal)
11 | Process P1 unlinks from process P1.1
12 | Process P1 receives message `{'EXIT',<0.53.0>,normal}` from process P1.1
13 | Process P1 exits ("Assertion violation")
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_3-1.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:343
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 sets flag `trap_exit` to `true`
9 | Process P1 spawns and links to process P1.1
10 | Process P1.1 exits (normal)
11 | Process P1 unlinks from process P1.1
12 | Process P1 receives message `{'EXIT',<0.57.0>,normal}` from process P1.1
13 | Process P1 exits ("Assertion violation")
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_3-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:343
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 sets flag `trap_exit` to `true`
9 | Process P1 spawns and links to process P1.1
10 | Process P1.1 exits (normal)
11 | Process P1 unlinks from process P1.1
12 | Process P1 receives message `{'EXIT',<0.53.0>,normal}` from process P1.1
13 | Process P1 exits ("Assertion violation")
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_link_unlink_3-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:343
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 sets flag `trap_exit` to `true`
9 | Process P1 spawns and links to process P1.1
10 | Process P1.1 exits (normal)
11 | Process P1 unlinks from process P1.1
12 | Process P1 receives message `{'EXIT',<0.57.0>,normal}` from process P1.1
13 | Process P1 exits ("Assertion violation")
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:418
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor-1.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:418
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:418
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:418
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_2-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_2-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_2-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:430
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_2-1.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:430
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_2-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:430
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_2-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:430
6 | Expected : result2
7 | Value : result1
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 receives message `{'DOWN',#Ref<0.0.0.714>,process,...}` from process P1.1
12 | Process P1 exits ("Assertion violation")
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_3-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_3-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_3-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_3-1.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_3-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_3-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_4-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_4-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_4-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:449
6 | Expected : true
7 | Value : false
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 exits ("Assertion violation")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_4-1.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:449
6 | Expected : true
7 | Value : false
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 exits ("Assertion violation")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_4-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:449
6 | Expected : true
7 | Value : false
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 exits ("Assertion violation")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_monitor_demonitor_4-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:449
6 | Expected : true
7 | Value : false
8 | Process P1 spawns and monitors process P1.1
9 | Process P1.1 exits (normal)
10 | Process P1 demonitors process P1.1
11 | Process P1 exits ("Assertion violation")
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_opt_link_receive_exit-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1 with opts
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_opt_link_receive_exit-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1 with opts
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_opt_link_receive_exit-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1 with opts
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_opt_link_receive_exit-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1 with opts
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_opt_link_receive_exit-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1.1
6 | Process P1 spawns process P1.1 with opts
7 | Process P1 exits (normal)
8 | Process P1.1 sets flag `trap_exit` to `true`
9 | Process P1.1 blocks
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_opt_monitor-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 | Process P1 spawns process P1.1 with opts (and monitors)
7 | Process P1 demonitors process P1.1
8 | Process P1 blocks
9 | Process P1.1 exits (normal)
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_opt_monitor-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 | Process P1 spawns process P1.1 with opts (and monitors)
7 | Process P1 demonitors process P1.1
8 | Process P1 blocks
9 | Process P1.1 exits (normal)
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_opt_monitor-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 | Process P1 spawns process P1.1 with opts (and monitors)
7 | Process P1 demonitors process P1.1
8 | Process P1 blocks
9 | Process P1.1 exits (normal)
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_opt_monitor-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Deadlock
5 | Blocked processes : P1
6 | Process P1 spawns process P1.1 with opts (and monitors)
7 | Process P1 demonitors process P1.1
8 | Process P1 blocks
9 | Process P1.1 exits (normal)
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_register_race-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_register_race-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_register_race-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 spawns process P1.1
7 | Process P1.1 sends message `bar` to process named 'foo'
8 | Process P1.1 exits ("Exception")
9 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_register_race-1.txt:
--------------------------------------------------------------------------------
1 | Checked 3 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 spawns process P1.1
7 | Process P1.1 sends message `bar` to process named 'foo'
8 | Process P1.1 exits ("Exception")
9 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_register_race-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 spawns process P1.1
7 | Process P1.1 sends message `bar` to process named 'foo'
8 | Process P1.1 exits ("Exception")
9 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_register_race-2.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 spawns process P1.1
7 | Process P1.1 sends message `bar` to process named 'foo'
8 | Process P1.1 exits ("Exception")
9 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_spawn_register_race-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Exception
5 | Details : {badarg,[]}
6 | Process P1 spawns process P1.1
7 | Process P1.1 sends message `bar` to process named 'foo'
8 | Process P1.1 exits ("Exception")
9 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_trap_exit_timing-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_trap_exit_timing-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_trap_exit_timing-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:356
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 sets flag `trap_exit` to `true`
9 | Process P1 spawns and links to process P1.1
10 | Process P1.1 exits (normal)
11 | Process P1 sets flag `trap_exit` to `false`
12 | Process P1 receives message `{'EXIT',<0.56.0>,normal}` from process P1.1
13 | Process P1 exits ("Assertion violation")
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_trap_exit_timing-1.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:356
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 sets flag `trap_exit` to `true`
9 | Process P1 spawns and links to process P1.1
10 | Process P1.1 exits (normal)
11 | Process P1 sets flag `trap_exit` to `false`
12 | Process P1 receives message `{'EXIT',<0.62.0>,normal}` from process P1.1
13 | Process P1 exits ("Assertion violation")
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_trap_exit_timing-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 4 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:356
6 | Expected : ok
7 | Value : not_ok
8 | Process P1 sets flag `trap_exit` to `true`
9 | Process P1 spawns and links to process P1.1
10 | Process P1.1 exits (normal)
11 | Process P1 sets flag `trap_exit` to `false`
12 | Process P1 receives message `{'EXIT',<0.62.0>,normal}` from process P1.1
13 | Process P1 exits ("Assertion violation")
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_var_mod_fun-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_var_mod_fun-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_var_mod_fun-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_var_mod_fun-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_var_mod_fun-inf.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). No errors found.
2 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_whereis-0-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:381
6 | Expected : <0.50.0>
7 | Value : undefined
8 | Process P1 spawns process P1.1
9 | Process P1 registers process P1 as `foo`
10 | Process P1 sends message `foo` to process P1.1
11 | Process P1 exits (normal)
12 | Process P1.1 receives message `foo` from process P1
13 | Process P1.1 requests the pid of unregistered process `foo` (undefined)
14 | Process P1.1 exits ("Assertion violation")
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_whereis-0.txt:
--------------------------------------------------------------------------------
1 | Checked 1 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:381
6 | Expected : <0.50.0>
7 | Value : undefined
8 | Process P1 spawns process P1.1
9 | Process P1 registers process P1 as `foo`
10 | Process P1 sends message `foo` to process P1.1
11 | Process P1 exits (normal)
12 | Process P1.1 receives message `foo` from process P1
13 | Process P1.1 requests the pid of unregistered process `foo` (undefined)
14 | Process P1.1 exits ("Assertion violation")
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_whereis-1-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:381
6 | Expected : <0.50.0>
7 | Value : undefined
8 | Process P1 spawns process P1.1
9 | Process P1 registers process P1 as `foo`
10 | Process P1 sends message `foo` to process P1.1
11 | Process P1 exits (normal)
12 | Process P1.1 receives message `foo` from process P1
13 | Process P1.1 requests the pid of unregistered process `foo` (undefined)
14 | Process P1.1 exits ("Assertion violation")
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_whereis-1.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:381
6 | Expected : <0.50.0>
7 | Value : undefined
8 | Process P1 spawns process P1.1
9 | Process P1 registers process P1 as `foo`
10 | Process P1 sends message `foo` to process P1.1
11 | Process P1 exits (normal)
12 | Process P1.1 receives message `foo` from process P1
13 | Process P1.1 requests the pid of unregistered process `foo` (undefined)
14 | Process P1.1 exits ("Assertion violation")
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/sched_tests-test_whereis-2-dpor.txt:
--------------------------------------------------------------------------------
1 | Checked 2 interleaving(s). 1 errors found.
2 |
3 | 1
4 | Error type : Assertion violation
5 | Module:Line : sched_tests.erl:381
6 | Expected : <0.50.0>
7 | Value : undefined
8 | Process P1 spawns process P1.1
9 | Process P1 registers process P1 as `foo`
10 | Process P1 sends message `foo` to process P1.1
11 | Process P1 exits (normal)
12 | Process P1.1 receives message `foo` from process P1
13 | Process P1.1 requests the pid of unregistered process `foo` (undefined)
14 | Process P1.1 exits ("Assertion violation")
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/results/waiting-waiting-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | Concuerror started with options:
3 | [{'after-timeout',infinite},
4 | {assume_racing,false},
5 | {files,["/home/stavros/git/Concuerror/tests/suites/basic_tests/src/waiting.erl"]},
6 | {normal_exit,[normal]},
7 | {symbolic,true},
8 | {target,{waiting,waiting,[]}},
9 | {verbose,0},
10 | {wait,2000}]
11 | ################################################################################
12 | No errors found!
13 | ################################################################################
14 | Done! (Exit status: completed)
15 | Summary: 0 errors, 1/1 interleavings explored
16 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/after_test_2.erl:
--------------------------------------------------------------------------------
1 | -module(after_test_2).
2 |
3 | -export([after_test_2/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | after_test_2() ->
9 | Parent = self(),
10 | spawn(fun() -> Parent ! one end),
11 | receive
12 | two -> throw(two)
13 | after
14 | 0 -> ok
15 | end,
16 | receive
17 | one -> ok
18 | after
19 | 0 -> ok
20 | end,
21 | receive
22 | deadlock -> ok
23 | end.
24 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/allow_first_crash.erl:
--------------------------------------------------------------------------------
1 | -module(allow_first_crash).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{keep_going, false}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | P = self(),
13 | spawn(fun() -> P ! ok end),
14 | receive
15 | ok -> ok
16 | after
17 | 0 -> ok
18 | end,
19 | exit(error).
20 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/application_check.erl:
--------------------------------------------------------------------------------
1 | -module(application_check).
2 |
3 | -export([test/0]).
4 |
5 | -export([scenarios/0]).
6 | -export([exceptional/0]).
7 |
8 | %%------------------------------------------------------------------------------
9 |
10 | scenarios() -> [{test, inf, dpor, crash}].
11 |
12 | exceptional() ->
13 | fun(_Expected, Actual) ->
14 | Cmd = "grep \"Your test communicates with the 'application_controller' process.\" ",
15 | [_,_,_|_] = os:cmd(Cmd ++ Actual),
16 | true
17 | end.
18 |
19 | %%------------------------------------------------------------------------------
20 |
21 | test() ->
22 | application:start(crypto),
23 | application:get_env(crypto).
24 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/bad_dictionary.erl:
--------------------------------------------------------------------------------
1 | -module(bad_dictionary).
2 |
3 | -compile(export_all).
4 |
5 | scenarios() ->
6 | [ bad_put
7 | , bad_get
8 | , bad_erase
9 | ].
10 |
11 | bad_put() ->
12 | BadFun =
13 | fun() ->
14 | erlang:put(key, value),
15 | erlang:put(key, value, extra_arg_bad)
16 | end,
17 | spawn_monitor(BadFun).
18 |
19 | bad_get() ->
20 | BadFun =
21 | fun() ->
22 | erlang:get(key),
23 | erlang:get(key, extra_arg_bad)
24 | end,
25 | spawn_monitor(BadFun).
26 |
27 | bad_erase() ->
28 | BadFun =
29 | fun() ->
30 | erlang:erase(key),
31 | erlang:erase(key, value)
32 | end,
33 | spawn_monitor(BadFun).
34 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/bad_whereis.erl:
--------------------------------------------------------------------------------
1 | -module(bad_whereis).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | whereis(1).
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/code_when_undef.erl:
--------------------------------------------------------------------------------
1 | -module(code_when_undef).
2 |
3 | -compile(export_all).
4 |
5 | scenarios() ->
6 | [ test
7 | ].
8 |
9 | test() ->
10 | catch ets:non_existing_function(),
11 | code:module_info(),
12 | P = self(),
13 | spawn(fun() -> P ! ok end),
14 | receive
15 | ok -> ok
16 | after
17 | 0 -> ok
18 | end,
19 | exit(error).
20 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/concuerror_crash.erl:
--------------------------------------------------------------------------------
1 | -module(concuerror_crash).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor, crash}].
8 |
9 | test() ->
10 | P = self(),
11 | spawn(fun() -> P ! ok end),
12 | receive
13 | ok ->
14 | list_to_pid("<0.42.42>") ! ok
15 | after
16 | 0 -> ok
17 | end.
18 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/curious_builtins.erl:
--------------------------------------------------------------------------------
1 | -module(curious_builtins).
2 |
3 | -export([scenarios/0]).
4 | -export([test1/0,test2/0,test3/0]).
5 |
6 | scenarios() ->
7 | [{T, inf, dpor} || T <- [test1,test2,test3]].
8 |
9 | test1() ->
10 | true = is_list(erlang:pid_to_list(self())).
11 |
12 | test2() ->
13 | true = is_number(erlang:system_info(schedulers)).
14 |
15 | test3() ->
16 | true = is_list(erlang:get_stacktrace()).
17 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/dead_receive.erl:
--------------------------------------------------------------------------------
1 | -module(dead_receive).
2 |
3 | -export([dead_receive/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | dead_receive() ->
9 | Timeout = infinity,
10 | receive
11 | after Timeout -> ok
12 | end.
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/depth_bound.erl:
--------------------------------------------------------------------------------
1 | -module(depth_bound).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{keep_going, false}, {depth_bound, 10}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | process_flag(trap_exit, true),
13 | test().
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/erlang_display.erl:
--------------------------------------------------------------------------------
1 | -module(erlang_display).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | erlang:display(test),
11 | receive after infinity -> ok end.
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/erlang_display_string.erl:
--------------------------------------------------------------------------------
1 | -module(erlang_display_string).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | erlang:display_string("Foo"),
11 | receive after infinity -> ok end.
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ets_exceptions.erl:
--------------------------------------------------------------------------------
1 | -module(ets_exceptions).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() -> [{test, inf, dpor}].
7 |
8 | test() ->
9 | test(2).
10 |
11 | test(N) ->
12 | table = ets:new(table, [public, named_table]),
13 | chain(N),
14 | true = [{key, N}] =/= ets:lookup(table, key).
15 |
16 | chain(0) -> ok;
17 | chain(N) ->
18 | Fun = fun() -> ets:insert(table, {key, N}) end,
19 | Q = spawn(Fun),
20 | chain(N - 1).
21 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ets_heir_2.erl:
--------------------------------------------------------------------------------
1 | -module(ets_heir_2).
2 |
3 | -export([ets_heir_2/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | ets_heir_2() ->
9 | spawn(fun() ->
10 | ets:lookup(table, x),
11 | throw(too_bad)
12 | end),
13 | Heir = spawn(fun() -> ok end),
14 | ets:new(table, [named_table, {heir, Heir, heir}]).
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ets_insert_new.erl:
--------------------------------------------------------------------------------
1 | -module(ets_insert_new).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | ets:new(table, [named_table, public]),
11 | child(),
12 | child(),
13 | child(),
14 | receive after infinity -> ok end.
15 |
16 | child() ->
17 | spawn(fun() ->
18 | try
19 | ets:update_counter(table, c, 1)
20 | catch
21 | _:_ ->
22 | ets:insert_new(table, {c,1})
23 | end
24 | end).
25 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ets_many_insert_new.erl:
--------------------------------------------------------------------------------
1 | -module(ets_many_insert_new).
2 |
3 | -export([ets_many_insert_new/0, ets_many_insert_new/1]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | ets_many_insert_new() ->
9 | ets_many_insert_new(3).
10 |
11 | ets_many_insert_new(N) ->
12 | ets:new(table, [public, named_table]),
13 | Writer =
14 | fun(I) ->
15 | ets:insert_new(table, {x, I})
16 | end,
17 | [spawn(fun() -> Writer(I) end) || I <- lists:seq(1, N)],
18 | ets:lookup(table, x),
19 | receive
20 | after
21 | infinity -> deadlock
22 | end.
23 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ets_new_failure.erl:
--------------------------------------------------------------------------------
1 | -module(ets_new_failure).
2 |
3 | -export([ets_new_failure/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | ets_new_failure() ->
9 | ets:new(table, [named_table, public]),
10 | ets:new(table, [named_table, public]).
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ets_new_failure_3.erl:
--------------------------------------------------------------------------------
1 | -module(ets_new_failure_3).
2 |
3 | -export([ets_new_failure_3/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | ets_new_failure_3() ->
9 | Fun =
10 | fun() ->
11 | ets:new(table, [named_table, public])
12 | end,
13 | spawn(Fun),
14 | spawn(Fun).
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ets_unguarded.erl:
--------------------------------------------------------------------------------
1 | -module(ets_unguarded).
2 |
3 | -export([test/0]).
4 |
5 | -export([scenarios/0]).
6 |
7 | %%------------------------------------------------------------------------------
8 |
9 | scenarios() -> [{test, inf, optimal}].
10 |
11 | %%------------------------------------------------------------------------------
12 |
13 | test() ->
14 | ets:new(table, [named_table, public]),
15 | Fun =
16 | fun() ->
17 | ets:insert(table, {1, self()})
18 | end,
19 | _ = [spawn(Fun) || _ <- lists:seq(1, 3)].
20 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/exit_kill.erl:
--------------------------------------------------------------------------------
1 | -module(exit_kill).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{treat_as_normal, kill}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | process_flag(trap_exit, true),
13 | Child = spawn_link(fun() -> exit(kill) end),
14 | receive
15 | {'EXIT', Child, kill} -> ok
16 | end.
17 |
18 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/exit_message_unpredicted.erl:
--------------------------------------------------------------------------------
1 | -module(exit_message_unpredicted).
2 |
3 | -export([exit_message_unpredicted/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | exit_message_unpredicted() ->
9 | P1 = self(),
10 | {P11,_} = spawn_monitor(fun() -> ok end),
11 | P12 = spawn(fun() -> P1 ! ok end),
12 | is_process_alive(P11),
13 | receive
14 | _ -> ok
15 | end,
16 | receive after infinity -> ok end.
17 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/file_read_file.erl:
--------------------------------------------------------------------------------
1 | -module(file_read_file).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | spawn(fun() -> file:get_cwd() end),
11 | file:get_cwd().
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/fun_fail.erl:
--------------------------------------------------------------------------------
1 | -module(fun_fail).
2 |
3 | -export([scenarios/0]).
4 | -export([test1/0,test2/0,test3/0]).
5 |
6 | scenarios() ->
7 | [{T, inf, dpor} || T <- [test1,test2,test3]].
8 |
9 | test1() ->
10 | A = ban,
11 | A(foo).
12 |
13 | test2() ->
14 | A = fun() -> ok end,
15 | A(foo).
16 |
17 | test3() ->
18 | A = 1,
19 | A:foo(blip).
20 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/group_leader.erl:
--------------------------------------------------------------------------------
1 | -module(group_leader).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0, test1/0]).
5 |
6 | scenarios() ->
7 | [{T, inf, dpor} || T <- [test,test1]].
8 |
9 | test() ->
10 | C = spawn(fun() -> receive _ -> ok end end),
11 | group_leader(C, self()),
12 | C ! ok.
13 |
14 | test1() ->
15 | {C, _} = spawn_monitor(fun() -> ok end),
16 | receive
17 | _MonitorDown -> ok
18 | end,
19 | group_leader(C, self()).
20 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/group_leader3.erl:
--------------------------------------------------------------------------------
1 | -module(group_leader3).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{ignore_error, deadlock}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | P = spawn(fun() -> receive after infinity -> ok end end),
13 | spawn(fun() -> group_leader(self(), P) end),
14 | process_info(P, group_leader).
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/halt_error.erl:
--------------------------------------------------------------------------------
1 | -module(halt_error).
2 |
3 | -export([test1/0, test2/0]).
4 |
5 | -export([scenarios/0]).
6 |
7 | scenarios() -> [{T, inf, optimal} || T <- [test1, test2]].
8 |
9 | %%------------------------------------------------------------------------------
10 |
11 | test1() ->
12 | spawn(fun() -> io:format("Will never be shown") end),
13 | erlang:halt(1).
14 |
15 | test2() ->
16 | spawn(fun() -> halt(0) end),
17 | io:format("Will be shown").
18 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/halt_support.erl:
--------------------------------------------------------------------------------
1 | -module(halt_support).
2 |
3 | -export([test/0]).
4 |
5 | -export([scenarios/0]).
6 | -export([exceptional/0]).
7 |
8 | scenarios() -> [{test, inf, optimal}].
9 |
10 | exceptional() ->
11 | fun(_Expected, Actual) ->
12 | String =
13 | "Concuerror does not do race analysis for calls to erlang:halt",
14 | Cmd = "grep \"" ++ String ++ "\" ",
15 | [_,_,_|_] = os:cmd(Cmd ++ Actual),
16 | true
17 | end.
18 |
19 | %%------------------------------------------------------------------------------
20 |
21 | test() ->
22 | spawn(fun() -> io:format("Will never be shown") end),
23 | erlang:halt(0).
24 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/hibernate.erl:
--------------------------------------------------------------------------------
1 | -module(hibernate).
2 |
3 | -compile(export_all).
4 |
5 | scenarios() ->
6 | [ test
7 | ].
8 |
9 | test() ->
10 | P = spawn(fun foo/0),
11 | P ! ok.
12 |
13 | foo() ->
14 | try
15 | erlang:hibernate(?MODULE, resume, [])
16 | catch
17 | _:_ -> error(impossible)
18 | end.
19 |
20 | resume() ->
21 | throw(possible).
22 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/hopeless_after.erl:
--------------------------------------------------------------------------------
1 | -module(hopeless_after).
2 |
3 | -export([hopeless_after/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | hopeless_after() ->
9 | P = self(),
10 | spawn(fun() -> P ! hopeless end),
11 | receive
12 | hope -> saved
13 | after
14 | 100 ->
15 | throw(no_hope)
16 | end.
17 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/i_hate_myself.erl:
--------------------------------------------------------------------------------
1 | -module(i_hate_myself).
2 |
3 | -export([i_hate_myself/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | i_hate_myself() ->
9 | Name = list_to_atom(lists:flatten(io_lib:format("~p",[make_ref()]))),
10 | spawn(fun() -> Name ! message end),
11 | register(Name, self()),
12 | receive
13 | message -> ok
14 | end.
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ignore_error_1.erl:
--------------------------------------------------------------------------------
1 | -module(ignore_error_1).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{ignore_error, abnormal_exit}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | P = self(),
13 | spawn(fun() -> exit(boom) end),
14 | receive after infinity -> ok end.
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ignore_error_2.erl:
--------------------------------------------------------------------------------
1 | -module(ignore_error_2).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{ignore_error, deadlock}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | P = self(),
13 | spawn(fun() -> exit(boom) end),
14 | receive after infinity -> ok end.
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/ignore_error_3.erl:
--------------------------------------------------------------------------------
1 | -module(ignore_error_3).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced(
7 | [ {depth_bound, 10}
8 | , {ignore_error, depth_bound}
9 | , {ignore_error, deadlock}
10 | ]).
11 |
12 | scenarios() ->
13 | [{test, inf, dpor}].
14 |
15 | test() ->
16 | P = self(),
17 | loop(10),
18 | spawn(fun() -> exit(boom) end),
19 | receive after infinity -> ok end.
20 |
21 | loop(0) -> ok;
22 | loop(N) ->
23 | self() ! ok,
24 | loop(N-1).
25 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/infinite_loop.erl:
--------------------------------------------------------------------------------
1 | -module(infinite_loop).
2 |
3 | -export([scenarios/0]).
4 | -export([exceptional/0]).
5 | -export([test1/0, test2/0]).
6 |
7 | -concuerror_options_forced([{timeout, 500}]).
8 |
9 | scenarios() ->
10 | [{T, inf, dpor, crash} || T <- [test1, test2]].
11 |
12 | exceptional() ->
13 | fun(_Expected, Actual) ->
14 | Cmd =
15 | "grep \"You can try to increase the '--timeout' limit and/or ensure that"
16 | " there are no infinite loops in your test.\" ",
17 | [_,_,_|_] = os:cmd(Cmd ++ Actual),
18 | true
19 | end.
20 |
21 | test1() ->
22 | loop().
23 |
24 | test2() ->
25 | process_flag(trap_exit, true),
26 | loop().
27 |
28 | loop() ->
29 | loop().
30 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/init_race_condition.erl:
--------------------------------------------------------------------------------
1 | %% A late reply from init could be registered as unblocking the respective child
2 | %% but not be previously instrumented. This bug appears on bigger machines.
3 |
4 | -module(init_race_condition).
5 |
6 | -export([scenarios/0]).
7 | -export([test/0]).
8 |
9 | scenarios() -> [{test, inf, dpor}].
10 |
11 | get_arguments() ->
12 | init ! {self(), get_arguments},
13 | receive
14 | {init, Rep} -> Rep
15 | end.
16 |
17 | test() ->
18 | [ spawn(fun() -> get_arguments() end) || _ <- lists:seq(1, 2) ].
19 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/inspect_system.erl:
--------------------------------------------------------------------------------
1 | -module(inspect_system).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | {group_leader, _} = process_info(whereis(kernel_sup), group_leader).
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/io_error.erl:
--------------------------------------------------------------------------------
1 | -module(io_error).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | io:format(standard_error,"Test",[]),
11 | receive after infinity -> ok end.
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/io_format.erl:
--------------------------------------------------------------------------------
1 | -module(io_format).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | io:format("Test"),
11 | receive after infinity -> ok end.
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/io_format_2.erl:
--------------------------------------------------------------------------------
1 | -module(io_format_2).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | spawn(fun() -> io:format("Child~n") end),
11 | io:format("Parent~n"),
12 | receive after infinity -> ok end.
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/io_format_3.erl:
--------------------------------------------------------------------------------
1 | -module(io_format_3).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{non_racing_system, user}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | P = self(),
13 | spawn(
14 | fun() -> P ! ok,
15 | io:format("Child~n")
16 | end),
17 | receive
18 | ok -> io:format("Parent~n")
19 | after
20 | 0 -> ok
21 | end,
22 | receive after infinity -> ok end.
23 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/irrelevant_send.erl:
--------------------------------------------------------------------------------
1 | -module(irrelevant_send).
2 |
3 | -export([irrelevant_send/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | irrelevant_send() ->
9 | process_flag(trap_exit, true),
10 | P1 = spawn_link(fun() -> ok end),
11 | P2 = spawn_link(fun() -> ok end),
12 | receive
13 | {'EXIT', P1, normal} -> ok;
14 | {'EXIT', P2, normal} -> throw(error)
15 | end.
16 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/is_process_alive_1.erl:
--------------------------------------------------------------------------------
1 | -module(is_process_alive_1).
2 |
3 | -export([is_process_alive_1/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | is_process_alive_1() ->
9 | Pid = spawn(fun() -> ok end),
10 | case is_process_alive(Pid) of
11 | true -> register(child, Pid);
12 | false -> ok
13 | end.
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/late_hope.erl:
--------------------------------------------------------------------------------
1 | -module(late_hope).
2 |
3 | -export([late_hope/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | late_hope() ->
9 | P = self(),
10 | Q = spawn(fun() -> ok end),
11 | spawn(fun() -> Q ! ignore,
12 | P ! hope end),
13 | receive
14 | hope -> throw(saved)
15 | after
16 | 100 -> hopeless
17 | end.
18 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/link_after.erl:
--------------------------------------------------------------------------------
1 | -module(link_after).
2 |
3 | -export([link_after/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | link_after() ->
9 | P1 = spawn(fun() ->
10 | process_flag(trap_exit, true),
11 | receive
12 | _ -> throw(untrapped)
13 | after
14 | 0 -> ok
15 | end
16 | end),
17 | try link(P1)
18 | catch _:_ -> ok
19 | end.
20 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/load_before_start.erl:
--------------------------------------------------------------------------------
1 | -module(load_before_start).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | spawn(ets,new,[table,[named_table]]),
11 | spawn(ets,lookup,[table,key]).
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/log_all.erl:
--------------------------------------------------------------------------------
1 | -module(log_all).
2 |
3 | -export([test/0]).
4 | -export([scenarios/0]).
5 | -export([exceptional/0]).
6 |
7 | -concuerror_options_forced([log_all]).
8 |
9 | scenarios() -> [{test, inf, dpor}].
10 |
11 | exceptional() ->
12 | fun(_Expected, Actual) ->
13 | Cmd = "grep \"Event trace\" ",
14 | case os:cmd(Cmd ++ Actual) of
15 | [_,_,_|_] -> true;
16 | _ -> false
17 | end
18 | end.
19 |
20 | test() ->
21 | P = self(),
22 | Q = spawn(fun() -> receive A -> A ! ok end end),
23 | S = spawn(fun() -> receive _ -> ok after 100 -> ok end end),
24 | Q ! S,
25 | S ! ok.
26 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/many_kill.erl:
--------------------------------------------------------------------------------
1 | -module(many_kill).
2 |
3 | -export([test/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{test, inf, dpor}].
7 |
8 | test() ->
9 | Fun =
10 | fun() ->
11 | receive after infinity -> ok end
12 | end,
13 | Pid = spawn(Fun),
14 | spawn(fun() -> exit(Pid, not_normal) end),
15 | spawn(fun() -> exit(Pid, also_not_normal) end),
16 | spawn(fun() -> exit(Pid, not_normal) end).
17 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/many_links.erl:
--------------------------------------------------------------------------------
1 | -module(many_links).
2 |
3 | -export([many_links/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | many_links() ->
9 | process_flag(trap_exit, true),
10 | P1 = spawn(fun() -> ok end),
11 | P2 = spawn(fun() -> ok end),
12 | link(P1),
13 | link(P2),
14 | receive after infinity -> ok end.
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/many_monitors.erl:
--------------------------------------------------------------------------------
1 | -module(many_monitors).
2 |
3 | -export([many_monitors/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | many_monitors() ->
9 | P1 = spawn(fun() -> ok end),
10 | P2 = spawn(fun() -> ok end),
11 | monitor(process, P1),
12 | monitor(process, P2),
13 | receive after infinity -> ok end.
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/many_send_to_dead.erl:
--------------------------------------------------------------------------------
1 | -module(many_send_to_dead).
2 |
3 | -export([many_send_to_dead/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | many_send_to_dead() ->
9 | Pid = spawn(fun() -> receive _ -> ok after 0 -> ok end end),
10 | spawn(fun() -> Pid ! msg1 end),
11 | spawn(fun() -> Pid ! msg2 end),
12 | receive
13 | after
14 | infinity -> deadlock
15 | end.
16 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/many_send_to_dead_2.erl:
--------------------------------------------------------------------------------
1 | -module(many_send_to_dead_2).
2 |
3 | -export([many_send_to_dead_2/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | many_send_to_dead_2() ->
9 | Pid =
10 | spawn(fun() ->
11 | receive _ -> ok after 0 -> ok end,
12 | receive _ -> ok after 0 -> ok end
13 | end),
14 | spawn(fun() -> Pid ! msg1 end),
15 | spawn(fun() -> Pid ! msg2 end),
16 | receive
17 | after
18 | infinity -> deadlock
19 | end.
20 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/message_queue_length.erl:
--------------------------------------------------------------------------------
1 | -module(message_queue_length).
2 |
3 | -export([test/0]).
4 |
5 | -export([scenarios/0]).
6 |
7 | %%------------------------------------------------------------------------------
8 |
9 | scenarios() -> [{test, inf, optimal}].
10 |
11 | %%------------------------------------------------------------------------------
12 |
13 | test() ->
14 | P = self(),
15 | spawn(fun() ->
16 | P ! one,
17 | P ! two
18 | end),
19 | receive
20 | two ->
21 | {message_queue_len, 1}
22 | = erlang:process_info(self(), message_queue_len)
23 | end.
24 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/messed_deliveries.erl:
--------------------------------------------------------------------------------
1 | -module(messed_deliveries).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | P = self(),
11 | process_flag(trap_exit, true),
12 | Q = spawn(fun() -> receive _ -> ok after 0 -> ok end end),
13 | spawn(fun() -> exit(P, die) end),
14 | spawn(fun() -> exit(P, die) end),
15 | Q ! ok.
16 |
17 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/module_loaded_dep.erl:
--------------------------------------------------------------------------------
1 | -module(module_loaded_dep).
2 |
3 | -compile(export_all).
4 |
5 | scenarios() ->
6 | [ test
7 | ].
8 |
9 | test() ->
10 | P = spawn(fun() -> erlang:module_loaded(erlang) end),
11 | spawn(fun() -> P ! ok end).
12 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/monitor_failure.erl:
--------------------------------------------------------------------------------
1 | -module(monitor_failure).
2 |
3 | -export([monitor_failure/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | monitor_failure() ->
9 | monitor(process, 1).
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/monitor_missing_messages.erl:
--------------------------------------------------------------------------------
1 | -module(monitor_missing_messages).
2 |
3 | -export([monitor_missing_messages/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | monitor_missing_messages() ->
9 | spawn_monitor(fun() -> ok end),
10 | receive
11 | _ -> throw(boo)
12 | after
13 | 0 -> ok
14 | end.
15 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/monitor_named.erl:
--------------------------------------------------------------------------------
1 | -module(monitor_named).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | C = spawn(fun() -> receive quit -> ok end end),
11 | true = register(child, C),
12 | Ref = monitor(process, child),
13 | true = unregister(child),
14 | C ! quit,
15 | receive
16 | {'DOWN',Ref, process, {child,_}, normal} -> ok
17 | end.
18 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/node_names.erl:
--------------------------------------------------------------------------------
1 | -module(node_names).
2 |
3 | -export([scenarios/0]).
4 | -export([test1/0,test2/0]).
5 |
6 | scenarios() ->
7 | [{T, inf, dpor} || T <- [test1,test2]].
8 |
9 | test1() ->
10 | R = monitor(process, {foo, node()}),
11 | receive
12 | {'DOWN',R,process,{foo,N},noproc} when N =:= node() -> ok
13 | end.
14 |
15 | test2() ->
16 | register(foo, self()),
17 | spawn(fun() -> {foo, node()} ! ok end),
18 | receive
19 | ok -> ok
20 | end.
21 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/nonexistent_module.erl:
--------------------------------------------------------------------------------
1 | -module(nonexistent_module).
2 |
3 | -export([test/0]).
4 |
5 | -export([scenarios/0]).
6 | -export([exceptional/0]).
7 |
8 | -concuerror_options_forced([]).
9 |
10 | %%------------------------------------------------------------------------------
11 |
12 | scenarios() -> [{test, inf, optimal}].
13 |
14 | exceptional() ->
15 | fun(_Expected, Actual) ->
16 | Cmd = "grep \"Could not load module 'nonexistent_module_42'\" ",
17 | [_,_,_|_] = os:cmd(Cmd ++ Actual),
18 | true
19 | end.
20 |
21 | %%------------------------------------------------------------------------------
22 |
23 | test() ->
24 | nonexistent_module_42:test().
25 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/normal_exit.erl:
--------------------------------------------------------------------------------
1 | -module(normal_exit).
2 |
3 | -export([normal_exit/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | normal_exit() ->
9 | exit(normal).
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/normal_shutdown.erl:
--------------------------------------------------------------------------------
1 | -module(normal_shutdown).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{treat_as_normal, shutdown}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | exit(shutdown).
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/normal_tuple_exit.erl:
--------------------------------------------------------------------------------
1 | -module(normal_tuple_exit).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{treat_as_normal, undef}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | non:existing().
13 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/os_timestamp.erl:
--------------------------------------------------------------------------------
1 | -module(os_timestamp).
2 |
3 | -export([test/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{test, inf, dpor}].
7 |
8 | test() ->
9 | os:timestamp(),
10 | receive after infinity -> ok end.
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/process_flag_link.erl:
--------------------------------------------------------------------------------
1 | -module(process_flag_link).
2 |
3 | -export([process_flag_link/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | process_flag_link() ->
9 | P = self(),
10 | process_flag(trap_exit, true),
11 | spawn(fun() -> P ! message end),
12 | spawn(fun() -> link(P) end),
13 | receive
14 | M1 ->
15 | receive
16 | _M2 ->
17 | message = M1
18 | end
19 | end.
20 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/processes.erl:
--------------------------------------------------------------------------------
1 | -module(processes).
2 |
3 | -export([test1/0, test2/0]).
4 | -export([scenarios/0]).
5 |
6 | -concuerror_options_forced([{symbolic_names, false}]).
7 |
8 | scenarios() -> [{T, inf, dpor} || T <- [test1, test2]].
9 |
10 | test1() ->
11 | Fun = fun() -> ok end,
12 | spawn(Fun),
13 | spawn(Fun),
14 | processes().
15 |
16 | test2() ->
17 | Fun = fun() -> ok end,
18 | FFun = fun() -> spawn(Fun) end,
19 | spawn(Fun),
20 | spawn(FFun),
21 | processes(),
22 | throw(foo).
23 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/processes_leader.erl:
--------------------------------------------------------------------------------
1 | -module(processes_leader).
2 |
3 | -export([test/0]).
4 | -export([scenarios/0]).
5 |
6 | %%------------------------------------------------------------------------------
7 |
8 | scenarios() -> [{test, inf, optimal}].
9 |
10 | %%------------------------------------------------------------------------------
11 |
12 | test() ->
13 | group_leader(S = self(), self()),
14 | W = fun W(0) -> ok;
15 | W(N) -> spawn_monitor(fun () -> W(N - 1) end)
16 | end,
17 | W(2),
18 | [exit(P, kill)
19 | || P <- processes(),
20 | P =/= S,
21 | {group_leader, S} =:= process_info(P, group_leader)
22 | ].
23 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/receive_after.erl:
--------------------------------------------------------------------------------
1 | -module(receive_after).
2 |
3 | -export([receive_after/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | receive_after() ->
9 | P = self(),
10 | P1 =
11 | spawn(fun() ->
12 | P ! ok,
13 | receive
14 | _Sth -> saved
15 | after
16 | 0 -> throw(boom)
17 | end
18 | end),
19 | P1 ! ok,
20 | receive
21 | ok -> ok
22 | end.
23 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/receive_and_after.erl:
--------------------------------------------------------------------------------
1 | -module(receive_and_after).
2 |
3 | -export([receive_and_after/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | receive_and_after() ->
9 | spawn(fun p1/0) ! enable.
10 |
11 | p1() ->
12 | receive
13 | enable -> throw(kaboom)
14 | after
15 | 10 ->
16 | throw(boom)
17 | end.
18 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/receive_with_guard.erl:
--------------------------------------------------------------------------------
1 | -module(receive_with_guard).
2 |
3 | -export([receive_with_guard/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | receive_with_guard() ->
9 | P1 =
10 | spawn(fun() ->
11 | receive
12 | W when is_atom(W) -> ok
13 | end
14 | end),
15 | P1 ! 10.
16 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/receive_without_trapping.erl:
--------------------------------------------------------------------------------
1 | -module(receive_without_trapping).
2 |
3 | -export([receive_without_trapping/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | receive_without_trapping() ->
9 | Parent = self(),
10 | C1 = spawn_link(fun() -> receive _ -> ok end end),
11 | C2 = spawn(fun() ->
12 | receive
13 | _ -> C1 ! ok
14 | end,
15 | Parent ! ok
16 | end),
17 | C2 ! ok,
18 | receive
19 | _ -> ok
20 | end.
21 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/register_link.erl:
--------------------------------------------------------------------------------
1 | -module(register_link).
2 |
3 | -export([test/0]).
4 |
5 | -export([scenarios/0]).
6 |
7 | %%------------------------------------------------------------------------------
8 |
9 | scenarios() -> [{test, inf, optimal}].
10 |
11 | %%------------------------------------------------------------------------------
12 |
13 | test() ->
14 | P = spawn(fun() -> receive ok -> ok end end),
15 | {Reg, M1} =
16 | spawn_monitor(
17 | fun() ->
18 | register(foo, P)
19 | end),
20 | {Link, M2} =
21 | spawn_monitor(
22 | fun() ->
23 | link(P)
24 | end),
25 | receive
26 | _ -> ok
27 | end,
28 | receive
29 | _ -> ok
30 | end,
31 | P ! ok.
32 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/registered_1.erl:
--------------------------------------------------------------------------------
1 | -module(registered_1).
2 |
3 | -export([registered_1/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | registered_1() ->
9 | register(parent, self()),
10 | Pid = spawn(fun() -> receive
11 | go -> ok
12 | end,
13 | register(parent, self())
14 | end),
15 | Pid ! go.
16 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/registered_2.erl:
--------------------------------------------------------------------------------
1 | -module(registered_2).
2 |
3 | -export([registered_2/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | registered_2() ->
9 | Pid = spawn(fun() ->
10 | register(parent, self())
11 | end),
12 | register(parent, self()),
13 | register(child, Pid).
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/registered_send_1.erl:
--------------------------------------------------------------------------------
1 | -module(registered_send_1).
2 |
3 | -export([registered_send_1/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | registered_send_1() ->
9 | Parent = self(),
10 | spawn(fun() ->
11 | Parent ! ok,
12 | register(child, self()),
13 | receive
14 | ok -> ok
15 | end
16 | end),
17 | receive
18 | ok -> child ! ok
19 | end.
20 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/registered_send_2.erl:
--------------------------------------------------------------------------------
1 | -module(registered_send_2).
2 |
3 | -export([registered_send_2/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | registered_send_2() ->
9 | Pid = spawn(fun() -> ok end),
10 | register(child, Pid).
11 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/registered_send_3.erl:
--------------------------------------------------------------------------------
1 | -module(registered_send_3).
2 |
3 | -export([registered_send_3/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | registered_send_3() ->
9 | Pid =
10 | spawn(fun() ->
11 | receive
12 | ok -> ok
13 | end
14 | end),
15 | Pid ! ok,
16 | register(child, Pid),
17 | child ! foo.
18 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/report_blocks.erl:
--------------------------------------------------------------------------------
1 | -module(report_blocks).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | scenarios() ->
7 | [{test, inf, dpor}].
8 |
9 | test() ->
10 | Parent = self(),
11 | spawn(fun() -> Parent ! ok end),
12 | receive
13 | ok -> ok
14 | end,
15 | receive
16 | after
17 | infinity -> deadlock
18 | end.
19 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/reuse_raw_pid.erl:
--------------------------------------------------------------------------------
1 | -module(reuse_raw_pid).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0]).
5 |
6 | -concuerror_options_forced([{symbolic_names, false}]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor}].
10 |
11 | test() ->
12 | P = self(),
13 | spawn(fun() -> P ! ok end),
14 | Msg =
15 | receive
16 | ok -> received
17 | after
18 | 0 -> expired
19 | end,
20 | spawn(fun() -> P ! Msg end),
21 | receive
22 | M -> throw(M)
23 | end.
24 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/safeops_coverage.erl:
--------------------------------------------------------------------------------
1 | -module(safeops_coverage).
2 |
3 | -compile(export_all).
4 |
5 | scenarios() ->
6 | [ test
7 | ].
8 |
9 | test() ->
10 | erlang:adler32("42"),
11 | [1, 2, 3, 4] = erlang:append([1, 2], [3, 4]),
12 | erlang:bump_reductions(10),
13 | erlang:crc32("42"),
14 | erlang:decode_packet(raw, <<"foo">>, []),
15 | {c} = erlang:delete_element(1, {b, c}),
16 | erlang:external_size(42),
17 | erlang:garbage_collect(),
18 | {b, c} = erlang:insert_element(1, {c}, b),
19 | true = erlang:is_builtin(erlang, is_builtin, 3),
20 | {a, a, a} = erlang:make_tuple(3, a),
21 | [1, 2] = erlang:subtract([1, 2, 3], [3]).
22 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/send_after_trouble.erl:
--------------------------------------------------------------------------------
1 | -module(send_after_trouble).
2 |
3 | -export([test/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{test, inf, dpor}].
7 |
8 | test() ->
9 | P = self(),
10 | Q = spawn(fun() -> receive A -> A ! ok end end),
11 | S = spawn(fun() -> receive _ -> ok after 100 -> ok end end),
12 | Q ! S,
13 | S ! ok.
14 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/send_self.erl:
--------------------------------------------------------------------------------
1 | -module(send_self).
2 |
3 | -export([scenarios/0]).
4 | -export([test1/0, test2/0, test3/0]).
5 |
6 | scenarios() ->
7 | [{T, inf, dpor} || T <- [test1,test2,test3]].
8 |
9 | test1() ->
10 | self() ! ok,
11 | receive
12 | ok -> ok
13 | after
14 | 0 -> error(self_messages_are_delivered_instantly)
15 | end.
16 |
17 | test2() ->
18 | P = self(),
19 | spawn(fun() -> P ! two end),
20 | P ! one,
21 | receive
22 | A -> throw(A)
23 | end.
24 |
25 | test3() ->
26 | P = self(),
27 | spawn(fun() -> P ! two end),
28 | P ! one,
29 | receive
30 | one -> throw(one)
31 | end.
32 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/send_using_names.erl:
--------------------------------------------------------------------------------
1 | -module(send_using_names).
2 |
3 | -export([send_using_names/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | send_using_names() ->
9 | Self = self(),
10 | Name = name,
11 | register(Name, Self),
12 | spawn(fun() -> Self ! msg1 end),
13 | spawn(fun() -> Name ! msg2 end),
14 | receive
15 | Msg1 ->
16 | receive
17 | Msg2 ->
18 | [Msg1, Msg2] = [msg1, msg2]
19 | end
20 | end.
21 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/signals_vs_messages.erl:
--------------------------------------------------------------------------------
1 | -module(signals_vs_messages).
2 |
3 | -export([scenarios/0]).
4 | -export([test/0, test1/0]).
5 |
6 | -concuerror_options_forced([{treat_as_normal, die}]).
7 |
8 | scenarios() ->
9 | [{T, inf, dpor} || T <- [test, test1]].
10 |
11 | test() ->
12 | P = self(),
13 | register(p, P),
14 | spawn(fun() -> exit(P, die) end),
15 | spawn(fun() -> P ! ok end),
16 | spawn(fun() -> whereis(p) end),
17 | receive
18 | ok -> ok
19 | end.
20 |
21 | test1() ->
22 | P = self(),
23 | spawn_link(fun() -> ok end),
24 | spawn(fun() -> P ! ok end),
25 | receive
26 | ok -> ok
27 | end.
28 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/simple_spawn.erl:
--------------------------------------------------------------------------------
1 | -module(simple_spawn).
2 |
3 | -export([simple_spawn/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | simple_spawn() ->
9 | spawn(fun() -> ok end).
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/spawn_and_send.erl:
--------------------------------------------------------------------------------
1 | -module(spawn_and_send).
2 |
3 | -export([spawn_and_send/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | spawn_and_send() ->
9 | spawn(fun() -> ok end) ! ok.
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/spawn_bad.erl:
--------------------------------------------------------------------------------
1 | -module(spawn_bad).
2 |
3 | -export([scenarios/0, test/0]).
4 |
5 | scenarios() -> [{test, inf, dpor}].
6 |
7 | test() -> spawn(2).
8 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/spawn_failure.erl:
--------------------------------------------------------------------------------
1 | -module(spawn_failure).
2 |
3 | -export([spawn_failure/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | spawn_failure() ->
9 | spawn(2).
10 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/spawn_monitor_test.erl:
--------------------------------------------------------------------------------
1 | -module(spawn_monitor_test).
2 |
3 | -export([scenarios/0]).
4 |
5 | scenarios() -> [{?MODULE, inf, dpor}].
6 |
7 | -include_lib("eunit/include/eunit.hrl").
8 |
9 | spawn_monitor_test() ->
10 | {Pid, Ref} = spawn_monitor(fun() -> ok end),
11 | demonitor(Ref),
12 | Result =
13 | receive
14 | {'DOWN', Ref, process, Pid, normal} -> result1
15 | after 0 -> result2
16 | end,
17 | ?assertEqual(result2, Result).
18 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/spawned_sender_crasher.erl:
--------------------------------------------------------------------------------
1 | -module(spawned_sender_crasher).
2 |
3 | -export([spawned_sender_crasher/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | spawned_sender_crasher() ->
9 | Receiver = spawn(fun receive_two/0),
10 | spawn(sender(Receiver, one)),
11 | spawn(sender(Receiver, two)).
12 |
13 |
14 |
15 | receive_two() ->
16 | receive
17 | Pat1 ->
18 | receive
19 | Pat2 ->
20 | [one, two] = [Pat1, Pat2],
21 | [two, one] = [Pat1, Pat2]
22 | end
23 | end.
24 |
25 | sender(Receiver, Msg) ->
26 | fun() -> Receiver ! Msg end.
27 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/spawned_senders.erl:
--------------------------------------------------------------------------------
1 | -module(spawned_senders).
2 |
3 | -export([spawned_senders/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | spawned_senders() ->
9 | Receiver = spawn(fun receive_two/0),
10 | spawn(sender(Receiver, one)),
11 | spawn(sender(Receiver, two)).
12 |
13 |
14 |
15 | receive_two() ->
16 | receive
17 | Pat1 ->
18 | receive
19 | Pat2 ->
20 | [Pat1, Pat2]
21 | end
22 | end.
23 |
24 | sender(Receiver, Msg) ->
25 | fun() -> Receiver ! Msg end.
26 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/stacktrace_vs_exit.erl:
--------------------------------------------------------------------------------
1 | -module(stacktrace_vs_exit).
2 |
3 | -export([test/0]).
4 |
5 | -export([scenarios/0]).
6 |
7 | -concuerror_options_forced([]).
8 |
9 | %%------------------------------------------------------------------------------
10 |
11 | scenarios() -> [{test, inf, optimal}].
12 |
13 | %%------------------------------------------------------------------------------
14 |
15 | test() ->
16 | spawn(fun() -> erlang:get_stacktrace() end).
17 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/system_info.erl:
--------------------------------------------------------------------------------
1 | -module(system_info).
2 |
3 | -export([test/0]).
4 |
5 | -export([scenarios/0]).
6 |
7 | %%------------------------------------------------------------------------------
8 |
9 | scenarios() -> [{test, inf, optimal}].
10 |
11 | %%------------------------------------------------------------------------------
12 |
13 | %% This is a dummy test function.
14 | test() ->
15 | {registered_name, user} = erlang:process_info(whereis(user), registered_name).
16 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/trigger_the_after.erl:
--------------------------------------------------------------------------------
1 | -module(trigger_the_after).
2 |
3 | -export([trigger_the_after/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | trigger_the_after() ->
9 | Receiver = spawn(fun receive_two/0),
10 | spawn(sender(Receiver, two)),
11 | spawn(sender(Receiver, one)),
12 | error(error).
13 |
14 | receive_two() ->
15 | receive
16 | one ->
17 | receive
18 | two -> throw(both)
19 | after
20 | 100 -> throw(one)
21 | end
22 | end.
23 |
24 | sender(Receiver, Msg) ->
25 | fun() -> Receiver ! Msg end.
26 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/unregister_deadlocked.erl:
--------------------------------------------------------------------------------
1 | -module(unregister_deadlocked).
2 |
3 | -export([scenarios/0]).
4 | -export([test1/0]).
5 |
6 | scenarios() ->
7 | [{test1,inf,dpor}].
8 |
9 | test1() ->
10 | whereis(one),
11 | spawn(fun() ->
12 | register(one, self()),
13 | receive after infinity -> ok end
14 | end),
15 | one ! boo.
16 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/unsupported_exit.erl:
--------------------------------------------------------------------------------
1 | -module(unsupported_exit).
2 |
3 | -export([scenarios/0]).
4 | -export([exceptional/0]).
5 |
6 | -export([test/0]).
7 |
8 | scenarios() ->
9 | [{test, inf, dpor, crash}].
10 |
11 | test() ->
12 | try
13 | erlang:monitor_node(node(), false)
14 | catch
15 | _:_ -> ok
16 | end.
17 |
18 | exceptional() ->
19 | fun(_Expected, Actual) ->
20 | String =
21 | "Concuerror does not support calls to built-in erlang:monitor_node/2",
22 | Cmd = "grep \"" ++ String ++ "\" ",
23 | [_,_,_|_] = os:cmd(Cmd ++ Actual),
24 | true
25 | end.
26 |
--------------------------------------------------------------------------------
/tests/suites/basic_tests/src/waiting.erl:
--------------------------------------------------------------------------------
1 | -module(waiting).
2 |
3 | -export([waiting/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | waiting() ->
9 | timer:sleep(25000).
10 |
--------------------------------------------------------------------------------
/tests/suites/bounding_tests/src/manolis/test.erl:
--------------------------------------------------------------------------------
1 | -module(test).
2 |
3 | -export([scenarios/0]).
4 | -export([test_2workers/0, test_2workers_small/0]).
5 |
6 | scenarios() ->
7 | [{test_2workers_small, 1, source, bpor}].
8 |
9 | test_2workers() ->
10 | rush_hour:test_2workers().
11 |
12 | test_2workers_small() ->
13 | rush_hour:test_2workers_small().
14 |
--------------------------------------------------------------------------------
/tests/suites/bounding_tests/src/readers.erl:
--------------------------------------------------------------------------------
1 | -module(readers).
2 | -export([scenarios/0,test/0]).
3 |
4 | scenarios() -> [{test, B, dpor} || B <- [0, 1, 2, 3, 4, 5, 6, 7]].
5 |
6 | test() -> readers(6).
7 |
8 | readers(N) ->
9 | ets:new(tab, [public, named_table]),
10 | Writer = fun() -> ets:insert(tab, {x, 42}) end,
11 | Reader = fun(I) -> ets:lookup(tab, I), ets:lookup(tab, x) end,
12 | spawn(Writer),
13 | [spawn(fun() -> Reader(I) end) || I <- lists:seq(1, N)],
14 | receive after infinity -> deadlock end.
15 |
--------------------------------------------------------------------------------
/tests/suites/bounding_tests/src/readers_2.erl:
--------------------------------------------------------------------------------
1 | -module(readers_2).
2 | -export([scenarios/0,test/0]).
3 |
4 | scenarios() -> [{test, B, dpor} || B <- [0, 1, 2, 3, 4, 5, 6, 7]].
5 |
6 | test() -> readers(6).
7 |
8 | readers(N) ->
9 | ets:new(tab, [public, named_table]),
10 | Writer = fun() -> ets:insert(tab, {x, 42}) end,
11 | Reader = fun(I) -> ets:lookup(tab, x) end,
12 | [spawn(fun() -> Reader(I) end) || I <- lists:seq(1, N)],
13 | spawn(Writer),
14 | receive after infinity -> deadlock end.
15 |
--------------------------------------------------------------------------------
/tests/suites/bounding_tests/src/readers_compare.erl:
--------------------------------------------------------------------------------
1 | -module(readers_compare).
2 | -export([scenarios/0,test/0]).
3 |
4 | scenarios() ->
5 | [{test, B, DPOR, BoundType} ||
6 | B <- [0, 1, 2, 6],
7 | DPOR <- [optimal, source, persistent],
8 | BoundType <- [bpor, delay],
9 | DPOR =/= optimal orelse BoundType =/= bpor
10 | ].
11 |
12 | test() -> readers(3).
13 |
14 | readers(N) ->
15 | ets:new(tab, [public, named_table]),
16 | Writer = fun() -> ets:insert(tab, {x, 42}) end,
17 | Reader = fun(I) -> ets:lookup(tab, I), ets:lookup(tab, x) end,
18 | spawn(Writer),
19 | [spawn(fun() -> Reader(I) end) || I <- lists:seq(1, N)],
20 | receive after infinity -> deadlock end.
21 |
--------------------------------------------------------------------------------
/tests/suites/bounding_tests/src/readers_delay.erl:
--------------------------------------------------------------------------------
1 | -module(readers_delay).
2 | -export([scenarios/0,test/0]).
3 |
4 | scenarios() -> [{test, B, none, delay} || B <- [0, 1, 2, 3, 4, 5, 6]].
5 |
6 | test() -> readers(6).
7 |
8 | readers(N) ->
9 | ets:new(tab, [public, named_table]),
10 | Writer = fun() -> ets:insert(tab, {x, 42}) end,
11 | Reader = fun(I) -> ets:lookup(tab, I), ets:lookup(tab, x) end,
12 | spawn(Writer),
13 | [spawn(fun() -> Reader(I) end) || I <- lists:seq(1, N)],
14 | receive after infinity -> deadlock end.
15 |
--------------------------------------------------------------------------------
/tests/suites/bounding_tests/src/readers_no_preempt.erl:
--------------------------------------------------------------------------------
1 | -module(readers_no_preempt).
2 | -export([scenarios/0,test/0]).
3 |
4 | scenarios() ->
5 | [{test, B, DPOR, BoundType} ||
6 | B <- [0, 1, 2],
7 | DPOR <- [optimal, source, persistent],
8 | BoundType <- [bpor, delay],
9 | DPOR =/= optimal orelse BoundType =/= bpor
10 | ].
11 |
12 | test() -> readers(3).
13 |
14 | readers(N) ->
15 | ets:new(tab, [public, named_table]),
16 | Writer = fun() -> ets:insert(tab, {x, 42}) end,
17 | Reader = fun() -> ets:lookup(tab, x) end,
18 | spawn(Writer),
19 | [spawn(fun() -> Reader() end) || _ <- lists:seq(1, N)],
20 | receive after infinity -> deadlock end.
21 |
--------------------------------------------------------------------------------
/tests/suites/bounding_tests/src/simple_delay.erl:
--------------------------------------------------------------------------------
1 | -module(simple_delay).
2 |
3 | -export([scenarios/0]).
4 |
5 | -export([test/0]).
6 |
7 | -define(TABLE, table).
8 |
9 | scenarios() -> [{test, B, dpor} || B <- [0, 1, 2]].
10 |
11 | test() ->
12 | ?TABLE = ets:new(?TABLE, [public, named_table]),
13 | write(x,0),
14 | Fun = fun(N) -> spawn(fun() -> work(N) end) end,
15 | lists:foreach(Fun, lists:seq(1, 10)),
16 | receive after infinity -> ok end.
17 |
18 | work(N) ->
19 | write(x, 1),
20 | write(x, 2).
21 |
22 | write(Key, Value) ->
23 | ets:insert(?TABLE, {Key, Value}).
24 |
25 | read(Key) ->
26 | [{Key, V}] = ets:lookup(?TABLE, Key),
27 | V.
28 |
--------------------------------------------------------------------------------
/tests/suites/bounding_tests/src/writers.erl:
--------------------------------------------------------------------------------
1 | -module(writers).
2 | -export([scenarios/0,test/0]).
3 |
4 | scenarios() -> [{test, B, dpor} || B <- [0, 1, 2, 3, 4, 5, 6, 7]].
5 |
6 | test() -> writers(6).
7 |
8 | writers(N) ->
9 | ets:new(tab, [public, named_table]),
10 | Writer = fun(I) -> ets:insert(tab, {x, I}) end,
11 | [spawn(fun() -> Writer(I) end) || I <- lists:seq(1, N)],
12 | receive after infinity -> deadlock end.
13 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/results/proxy-proxy-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | Concuerror started with options:
3 | [{'after-timeout',infinite},
4 | {assume_racing,false},
5 | {files,["/home/stavros/git/Concuerror/tests/suites/dpor_tests/src/proxy.erl"]},
6 | {normal_exit,[normal]},
7 | {symbolic,true},
8 | {target,{proxy,proxy,[]}},
9 | {verbose,0},
10 | {wait,2000}]
11 | ################################################################################
12 | No errors found!
13 | ################################################################################
14 | Done! (Exit status: completed)
15 | Summary: 0 errors, 2/2 interleavings explored
16 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/results/proxy2-proxy2-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | Concuerror started with options:
3 | [{'after-timeout',infinite},
4 | {assume_racing,false},
5 | {files,["/home/stavros/git/Concuerror/tests/suites/dpor_tests/src/proxy2.erl"]},
6 | {normal_exit,[normal]},
7 | {symbolic,true},
8 | {target,{proxy2,proxy2,[]}},
9 | {verbose,0},
10 | {wait,2000}]
11 | ################################################################################
12 | No errors found!
13 | ################################################################################
14 | Done! (Exit status: completed)
15 | Summary: 0 errors, 2/2 interleavings explored
16 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/results/stress-stress-inf-dpor.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | Concuerror started with options:
3 | [{'after-timeout',infinite},
4 | {assume_racing,false},
5 | {files,["/home/stavros/git/Concuerror/tests/suites/dpor_tests/src/stress.erl"]},
6 | {normal_exit,[normal]},
7 | {symbolic,true},
8 | {target,{stress,stress,[]}},
9 | {verbose,0},
10 | {wait,2000}]
11 | ################################################################################
12 | No errors found!
13 | ################################################################################
14 | Done! (Exit status: completed)
15 | Summary: 0 errors, 12/12 interleavings explored
16 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/diff_obs.erl:
--------------------------------------------------------------------------------
1 | -module(diff_obs).
2 |
3 | -export([test/0, scenarios/0]).
4 |
5 | scenarios() ->
6 | [{test, inf, optimal}].
7 |
8 | p() ->
9 | main ! {x, 0}.
10 |
11 | q() ->
12 | main ! {y, 0}.
13 |
14 | r() ->
15 | main ! {x, 1}.
16 |
17 | s() ->
18 | main ! o.
19 |
20 | test() ->
21 | register(main, self()),
22 | [spawn(F) || F <- [fun p/0, fun q/0, fun r/0, fun s/0]],
23 | receive
24 | o -> receive {x, _} -> ok end
25 | after
26 | 0 -> receive {_, _} -> ok end
27 | end,
28 | receive after infinity -> ok end.
29 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/ets_cross.erl:
--------------------------------------------------------------------------------
1 | -module(ets_cross).
2 |
3 | -export([test/0,scenarios/0]).
4 |
5 | scenarios() -> [{test, inf, dpor}].
6 |
7 | test() ->
8 | ets:new(table, [public, named_table]),
9 | spawn(fun() ->
10 | ets:insert(table, {x, 1}),
11 | ets:insert(table, {y, 1})
12 | end),
13 | spawn(fun() ->
14 | ets:insert(table, {y, 2}),
15 | ets:insert(table, {x, 2})
16 | end),
17 | receive
18 | after
19 | infinity -> ok
20 | end.
21 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/ets_dependencies.erl:
--------------------------------------------------------------------------------
1 | -module(ets_dependencies).
2 |
3 | -export([ets_dependencies/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | ets_dependencies() ->
9 | ets:new(table, [public, named_table]),
10 | spawn(fun() ->
11 | ets:insert(table, {x, 1})
12 | end),
13 | spawn(fun() ->
14 | ets:insert(table, {y, 2}),
15 | ets:lookup(table, x)
16 | end),
17 | spawn(fun() ->
18 | ets:insert(table, {z, 3}),
19 | ets:lookup(table, x)
20 | end),
21 | receive
22 | after
23 | infinity -> ok
24 | end.
25 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/hairbrush_teeth_1.erl:
--------------------------------------------------------------------------------
1 | -module(hairbrush_teeth_1).
2 |
3 | -export([hairbrush_teeth_1/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | hairbrush_teeth_1() ->
9 | ets:new(table, [public, named_table]),
10 | ets:insert(table, {x, 0}),
11 | spawn(fun() ->
12 | ets:insert(table, {x, 1}),
13 | ets:insert(table, {x, 2})
14 | end),
15 | spawn(fun() ->
16 | ets:lookup(table, x),
17 | ets:lookup(table, x)
18 | end),
19 | receive
20 | after
21 | infinity -> ok
22 | end.
23 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/hairbrush_teeth_2.erl:
--------------------------------------------------------------------------------
1 | -module(hairbrush_teeth_2).
2 |
3 | -export([hairbrush_teeth_2/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | hairbrush_teeth_2() ->
9 | ets:new(table, [public, named_table]),
10 | ets:insert(table, {x, 0}),
11 | spawn(fun() ->
12 | ets:insert(table, {x, 1}),
13 | ets:insert(table, {x, 2}),
14 | ets:insert(table, {x, 3})
15 | end),
16 | spawn(fun() ->
17 | ets:lookup(table, x),
18 | ets:lookup(table, x),
19 | ets:lookup(table, x)
20 | end),
21 | receive
22 | after
23 | infinity -> ok
24 | end.
25 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/independent_receivers.erl:
--------------------------------------------------------------------------------
1 | -module(independent_receivers).
2 |
3 | -export([independent_receivers/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | independent_receivers() ->
9 | Parent = self(),
10 | Rec1 = spawn(fun() -> receiver(Parent, 1) end),
11 | Rec2 = spawn(fun() -> receiver(Parent, 2) end),
12 | _Snd1 = spawn(fun() -> sender(Rec1) end),
13 | _Snd2 = spawn(fun() -> sender(Rec2) end),
14 | receive
15 | _Msg1 ->
16 | receive
17 | _Msg2 -> done
18 | end
19 | end.
20 |
21 | sender(Pid) ->
22 | Pid ! ok.
23 |
24 | receiver(Parent, N) ->
25 | receive
26 | ok -> Parent ! N
27 | end.
28 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/indifferent_senders.erl:
--------------------------------------------------------------------------------
1 | -module(indifferent_senders).
2 |
3 | -export([indifferent_senders/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | indifferent_senders() ->
9 | Parent = self(),
10 | Messages = [msg1, msg2, msg3],
11 | [spawn(fun() -> Parent ! Msg end) || Msg <- Messages],
12 | receive_in_order(Messages),
13 | ok.
14 |
15 | receive_in_order([]) -> ok;
16 | receive_in_order([Msg|Rest]) ->
17 | receive
18 | Msg -> receive_in_order(Rest)
19 | end.
20 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/no_observers.erl:
--------------------------------------------------------------------------------
1 | -module(no_observers).
2 |
3 | -compile(export_all).
4 |
5 | -concuerror_options_forced([{use_receive_patterns, false}]).
6 |
7 | scenarios() ->
8 | [ test
9 | ].
10 |
11 | test() ->
12 | P = self(),
13 | Fun = fun() -> P ! self() end,
14 | P1 = spawn(Fun),
15 | P2 = spawn(Fun),
16 | receive
17 | P1 ->
18 | receive
19 | P2 ->
20 | ok
21 | end
22 | end.
23 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/process_info.erl:
--------------------------------------------------------------------------------
1 | -module(process_info).
2 |
3 | -compile(export_all).
4 |
5 | scenarios() ->
6 | [ links
7 | ].
8 |
9 | links() ->
10 | P = self(),
11 | Fun = fun() -> whereis(name), link(P) end,
12 | Fun2 = fun() -> P ! foo, link(P) end,
13 | P1 = spawn(Fun),
14 | P2 = spawn(Fun2),
15 | receive foo -> ok end,
16 | process_info(self(), links),
17 | register(name, self()),
18 | receive after infinity -> ok end.
19 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/proxy2.erl:
--------------------------------------------------------------------------------
1 | -module(proxy2).
2 |
3 | -export([proxy2/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | proxy2() ->
9 | C = self(),
10 | B = proxy(100, C),
11 | _A = spawn(fun() ->
12 | B ! world,
13 | C ! hello
14 | end),
15 | receive Msg1 -> ok end,
16 | receive Msg2 -> ok end,
17 | {Msg1, Msg2}.
18 |
19 | proxy(0, Pid) ->
20 | Pid;
21 | proxy(N, Pid) ->
22 | Proxy = proxy(N-1, Pid),
23 | proxy(Proxy).
24 |
25 | proxy(Pid) ->
26 | spawn(fun() ->
27 | receive Msg -> Pid ! Msg end
28 | end).
29 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/readers.erl:
--------------------------------------------------------------------------------
1 | -module(readers).
2 | -export([scenarios/0,test/0]).
3 |
4 | scenarios() -> [{test, inf, DPOR} || DPOR <- [optimal, persistent, source]].
5 |
6 | test() -> readers(6).
7 |
8 | readers(N) ->
9 | ets:new(tab, [public, named_table]),
10 | Writer = fun() -> ets:insert(tab, {x, 42}) end,
11 | Reader = fun(I) -> ets:lookup(tab, I), ets:lookup(tab, x) end,
12 | spawn(Writer),
13 | [spawn(fun() -> Reader(I) end) || I <- lists:seq(1, N)],
14 | receive after infinity -> deadlock end.
15 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/readers_basic.erl:
--------------------------------------------------------------------------------
1 | -module(readers_basic).
2 |
3 | -export([readers_basic/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | readers_basic() ->
9 | ets:new(table, [public, named_table]),
10 | ets:insert(table, {x, 0}),
11 | ets:insert(table, {y, 0}),
12 | Writer =
13 | fun() ->
14 | ets:insert(table, {x, 1})
15 | end,
16 | Reader =
17 | fun() ->
18 | ets:lookup(table, x)
19 | end,
20 | spawn(Writer),
21 | spawn(Reader),
22 | spawn(Reader),
23 | receive
24 | after
25 | infinity -> ok
26 | end.
27 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/readers_rrw.erl:
--------------------------------------------------------------------------------
1 | -module(readers_rrw).
2 |
3 | -export([readers_rrw/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | readers_rrw() ->
9 | ets:new(table, [public, named_table]),
10 | ets:insert(table, {x, 0}),
11 | ets:insert(table, {y, 0}),
12 | Writer =
13 | fun() ->
14 | ets:lookup(table, y),
15 | ets:insert(table, {x, 1})
16 | end,
17 | Reader =
18 | fun() ->
19 | ets:lookup(table, y),
20 | ets:lookup(table, x)
21 | end,
22 | spawn(Reader),
23 | spawn(Reader),
24 | spawn(Writer),
25 | receive
26 | after
27 | infinity -> ok
28 | end.
29 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/readers_rwr.erl:
--------------------------------------------------------------------------------
1 | -module(readers_rwr).
2 |
3 | -export([readers_rwr/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | readers_rwr() ->
9 | ets:new(table, [public, named_table]),
10 | ets:insert(table, {x, 0}),
11 | ets:insert(table, {y, 0}),
12 | Writer =
13 | fun() ->
14 | ets:lookup(table, y),
15 | ets:insert(table, {x, 1})
16 | end,
17 | Reader =
18 | fun() ->
19 | ets:lookup(table, y),
20 | ets:lookup(table, x)
21 | end,
22 | spawn(Reader),
23 | spawn(Writer),
24 | spawn(Reader),
25 | receive
26 | after
27 | infinity -> ok
28 | end.
29 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/readers_wrr.erl:
--------------------------------------------------------------------------------
1 | -module(readers_wrr).
2 |
3 | -export([readers_wrr/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | readers_wrr() ->
9 | ets:new(table, [public, named_table]),
10 | ets:insert(table, {x, 0}),
11 | ets:insert(table, {y, 0}),
12 | Writer =
13 | fun() ->
14 | ets:lookup(table, y),
15 | ets:insert(table, {x, 1})
16 | end,
17 | Reader =
18 | fun() ->
19 | ets:lookup(table, y),
20 | ets:lookup(table, x)
21 | end,
22 | spawn(Writer),
23 | spawn(Reader),
24 | spawn(Reader),
25 | receive
26 | after
27 | infinity -> ok
28 | end.
29 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/receive_order.erl:
--------------------------------------------------------------------------------
1 | -module(receive_order).
2 |
3 | -export([scenarios/0]).
4 | -export([test1/0,test2/0,test3/0]).
5 |
6 | scenarios() ->
7 | [{T, inf, dpor} || T <- [test1,test2, test3]].
8 |
9 | test1() -> test(a, b).
10 |
11 | test2() -> test(b, a).
12 |
13 | test(F, S) ->
14 | P = spawn(fun() -> receive a -> receive B -> B = b end end end),
15 | spawn(fun() -> P ! F end),
16 | spawn(fun() -> P ! S end).
17 |
18 | test3() ->
19 | P = spawn(fun() -> receive a -> receive b -> receive C -> C = c end end end end),
20 | spawn(fun() -> P ! b end),
21 | spawn(fun() -> P ! c, P ! a end).
22 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/same_messages.erl:
--------------------------------------------------------------------------------
1 | -module(same_messages).
2 |
3 | -export([same_messages/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | same_messages() ->
9 | Parent = self(),
10 | spawn(fun() -> Parent ! one end),
11 | spawn(fun() -> Parent ! one end),
12 | receive
13 | One ->
14 | receive
15 | Two ->
16 | [one, one] = [One, Two]
17 | end
18 | end.
19 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/same_messages_2.erl:
--------------------------------------------------------------------------------
1 | -module(same_messages_2).
2 |
3 | -export([same_messages_2/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | same_messages_2() ->
9 | P = self(),
10 | Fun =
11 | fun(A) ->
12 | fun() ->
13 | P ! unlock,
14 | P ! A
15 | end
16 | end,
17 | spawn(Fun(a)),
18 | spawn(Fun(b)),
19 | receive
20 | unlock ->
21 | receive
22 | Msg when Msg =:= a;
23 | Msg =:= b -> throw(Msg)
24 | end
25 | end.
26 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/same_messages_3.erl:
--------------------------------------------------------------------------------
1 | -module(same_messages_3).
2 |
3 | -export([same_messages_3/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | same_messages_3() ->
9 | P = self(),
10 | Fun =
11 | fun(X) ->
12 | fun() ->
13 | P ! X,
14 | P ! unlock
15 | end
16 | end,
17 | spawn(Fun(a)),
18 | spawn(Fun(b)),
19 | receive
20 | unlock ->
21 | receive
22 | X when X =/= unlock -> exit(X)
23 | end
24 | end.
25 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/send_it_ets.erl:
--------------------------------------------------------------------------------
1 | -module(send_it_ets).
2 |
3 | -export([send_it_ets/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | send_it_ets() ->
9 | Parent = self(),
10 | ets:new(table, [named_table, public]),
11 | spawn(fun() ->
12 | ets:insert(table, {x,1}),
13 | Parent ! ok
14 | end),
15 | spawn(fun() ->
16 | Parent ! ok
17 | end),
18 | receive
19 | ok ->
20 | case ets:lookup(table, x) of
21 | [] -> throw(boom);
22 | _ -> safe
23 | end
24 | end.
25 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/timer_replayed.erl:
--------------------------------------------------------------------------------
1 | -module(timer_replayed).
2 |
3 | -export([test/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{test, inf, dpor}].
7 |
8 | test() ->
9 | ets:new(table, [named_table, public]),
10 | spawn(fun() -> ets:insert(table, {x,1}) end),
11 | spawn(fun() -> ets:lookup(table, x) end),
12 | P = self(),
13 | spawn(fun() -> erlang:send_after(100, P, ok) end),
14 | receive ok -> ok after 100 -> ok end,
15 | receive after infinity -> ok end.
16 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/two_writers_readers_1.erl:
--------------------------------------------------------------------------------
1 | -module(two_writers_readers_1).
2 |
3 | -export([two_writers_readers_1/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | two_writers_readers_1() ->
9 | ets:new(table, [public, named_table]),
10 | ets:insert(table, {x, 0}),
11 | ets:insert(table, {y, 0}),
12 | spawn(fun() ->
13 | ets:insert(table, {x, 1}),
14 | ets:insert(table, {x, 2})
15 | end),
16 | Fun =
17 | fun() ->
18 | ets:lookup(table, y),
19 | ets:lookup(table, x)
20 | end,
21 | spawn(Fun),
22 | spawn(Fun),
23 | receive
24 | after
25 | infinity -> ok
26 | end.
27 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/wakeup_many.erl:
--------------------------------------------------------------------------------
1 | -module(wakeup_many).
2 |
3 | -export([wakeup_many/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | wakeup_many() ->
9 | ets:new(table, [named_table, public]),
10 | spawn(fun() -> ets:insert(table, {x, 1}) end),
11 | spawn(fun() -> ets:insert(table, {x, 0}) end),
12 | ets:insert(table, {x,1}),
13 | receive after infinity -> deadlock end.
14 |
--------------------------------------------------------------------------------
/tests/suites/dpor_tests/src/writeread.erl:
--------------------------------------------------------------------------------
1 | -module(writeread).
2 |
3 | -export([writeread/0]).
4 | -export([scenarios/0]).
5 |
6 | scenarios() -> [{?MODULE, inf, dpor}].
7 |
8 | writeread() ->
9 | ets:new(table, [named_table, public]),
10 | spawn(fun() ->
11 | ets:insert(table, {x, 1})%,
12 | %ets:lookup(table, x)
13 | end),
14 | spawn(fun() ->
15 | ets:insert(table, {x, 1}),
16 | ets:lookup(table, x)
17 | end),
18 | ets:insert(table, {x,0}),
19 | ets:lookup(table, x),
20 | receive after infinity -> deadlock end.
21 |
--------------------------------------------------------------------------------
/tests/suites/erlang_tests/src/erlang_maps.erl:
--------------------------------------------------------------------------------
1 | -module(erlang_maps).
2 |
3 | -compile(export_all).
4 |
5 | scenarios() ->
6 | [ maps_fold ].
7 |
8 | maps_fold() ->
9 | maps:fold(fun(_,_,Acc) -> Acc end, ok, #{}).
10 |
--------------------------------------------------------------------------------
/tests/suites/erlang_tests/src/erlang_timer.erl:
--------------------------------------------------------------------------------
1 | -module(erlang_timer).
2 |
3 | -compile(export_all).
4 |
5 | scenarios() ->
6 | [ cancel_badarg
7 | , read_badarg
8 | , cancel_bad
9 | , read_bad
10 | ].
11 |
12 | cancel_badarg() ->
13 | try
14 | erlang:cancel_timer(1),
15 | exit(bad)
16 | catch
17 | error:badarg -> ok
18 | end.
19 |
20 | read_badarg() ->
21 | try
22 | erlang:cancel_timer(1),
23 | exit(bad)
24 | catch
25 | error:badarg -> ok
26 | end.
27 |
28 | cancel_bad() ->
29 | true = false =:= erlang:cancel_timer(make_ref()).
30 |
31 | read_bad() ->
32 | true = false =:= erlang:cancel_timer(make_ref()).
33 |
--------------------------------------------------------------------------------