Project

General

Profile

Feature #8743 » error trace(3).json

Ilja Zakharov, 02/27/2018 02:24 PM

 
{
"actions": [
"Declare auxiliary variables.",
"Initialize the module after insmod with 'ldv_init' function.",
"Get callbacks to register provided within 'usb_driver' argument.",
"Register FUNCTIONS MODELS callbacks.",
"Begin USB callbacks invocation scenario.",
"Allocate memory and initialize new USB interface.",
"Allocate memory for adhoc callback parameters.",
"Associate driver-specific data with the USB interface. Invoke callback probe from usb_driver."
],
"callback actions": [],
"edges": [
{
"assumption": "((signed long long int)(&__this_module)) == 1LL; ((signed long long int)(&(__this_module.list))) == 5LL; (&(__this_module.name)) == 21LL; ((signed long long int)(&(__this_module.mkobj))) == 77LL; ((signed long long int)(&(__this_module.mkobj.kobj))) == 77LL; ((signed long long int)(&(__this_module.mkobj.kobj.entry))) == 85LL; ((signed long long int)(&(__this_module.mkobj.kobj.kref))) == 133LL; ((signed long long int)(&(__this_module.mkobj.kobj.kref.refcount))) == 133LL; ((signed long long int)(&(__this_module.mkobj.kobj.release))) == 137LL; ((signed long long int)(&(__this_module.mkobj.kobj.release.work))) == 137LL; ((signed long long int)(&(__this_module.mkobj.kobj.release.work.data))) == 137LL; ((signed long long int)(&(__this_module.mkobj.kobj.release.work.entry))) == 145LL; ((signed long long int)(&(__this_module.mkobj.kobj.release.work.lockdep_map))) == 169LL; (&(__this_module.mkobj.kobj.release.work.lockdep_map.class_cache)) == 177LL; ((signed long long int)(&(__this_module.mkobj.kobj.release.timer))) == 217LL; ((signed long long int)(&(__this_module.mkobj.kobj.release.timer.entry))) == 217LL; (&(__this_module.mkobj.kobj.release.timer.start_comm)) == 281LL; ((signed long long int)(&(__this_module.mkobj.kobj.release.timer.lockdep_map))) == 297LL; (&(__this_module.mkobj.kobj.release.timer.lockdep_map.class_cache)) == 305LL; ((signed long long int)(&(__this_module.arch))) == 610LL; ((signed long long int)(&(__this_module.bug_list))) == 618LL; ((signed long long int)(&(__this_module.source_list))) == 778LL; ((signed long long int)(&(__this_module.target_list))) == 794LL;",
"file": 0,
"source": "extern struct module __this_module;",
"source node": 0,
"start line": 33,
"target node": 1,
"thread": 0
},
{
"assumption": "((signed long long int)(&ldv_driver)) == 6849LL; ((signed long long int)(&(ldv_driver.dynids))) == 6929LL; ((signed long long int)(&(ldv_driver.dynids.lock))) == 6929LL; ((signed long long int)(&(ldv_driver.dynids.lock.__annonCompField20))) == 6929LL; ((signed long long int)(&(ldv_driver.dynids.list))) == 7001LL; ((signed long long int)(&(ldv_driver.drvwrap))) == 7017LL; ((signed long long int)(&(ldv_driver.drvwrap.driver))) == 7017LL;",
"file": 1,
"source": "static struct usb_driver ldv_driver = #line 34 {\"ldv-test\", &ldv_probe, &ldv_disconnect, 0, 0, 0, 0, 0, 0, 0, {{{{{{0U}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, {0, 0}}, {{0, 0, 0, 0, (_Bool)0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0}, 0U, 0U, 0U, 0U};",
"source node": 1,
"start line": 34,
"target node": 2,
"thread": 0
},
{
"assumption": "ldv_emg_alias_ldv_driver_2 == 6849LL; ((signed long long int)(&(ldv_emg_alias_ldv_driver_2->dynids))) == 6929LL; ((signed long long int)(&(ldv_emg_alias_ldv_driver_2->dynids.lock))) == 6929LL; ((signed long long int)(&(ldv_emg_alias_ldv_driver_2->dynids.lock.__annonCompField20))) == 6929LL; ((signed long long int)(&(ldv_emg_alias_ldv_driver_2->dynids.list))) == 7001LL; ((signed long long int)(&(ldv_emg_alias_ldv_driver_2->drvwrap))) == 7017LL; ((signed long long int)(&(ldv_emg_alias_ldv_driver_2->drvwrap.driver))) == 7017LL;",
"file": 2,
"source": "struct usb_driver *ldv_emg_alias_ldv_driver_2 = &ldv_driver;",
"source node": 2,
"start line": 14,
"target node": 3,
"thread": 0
},
{
"assumption": "registered == 0;",
"file": 3,
"source": "int registered;",
"source node": 3,
"start line": 18,
"target node": 4,
"thread": 0
},
{
"assumption": "probed == 0;",
"file": 3,
"source": "int probed;",
"source node": 4,
"start line": 19,
"target node": 5,
"thread": 0
},
{
"assumption": "supress == 0;",
"file": 3,
"source": "int supress;",
"source node": 5,
"start line": 20,
"target node": 6,
"thread": 0
},
{
"file": 4,
"source": "static bool __ldv_in_interrupt_context = 0;",
"source node": 6,
"start line": 25,
"target node": 7,
"thread": 0
},
{
"enter": 36,
"entry_point": "Entry point 'main'",
"file": 5,
"line": 33,
"source": "Begin program execution",
"source node": 7,
"target node": 8,
"thread": 1
},
{
"enter": 0,
"entry_point": "Initialize or exit module.",
"file": 5,
"source": "ldv_insmod_0((void *)0);",
"source node": 8,
"start line": 35,
"target node": 9,
"thread": 1
},
{
"action": 0,
"file": 5,
"source": "int ldv_0_ret;",
"source node": 9,
"start line": 289,
"target node": 10,
"thread": 1
},
{
"action": 1,
"enter": 2,
"file": 5,
"source": "ldv_0_ret = ldv_init();",
"source node": 10,
"start line": 294,
"target node": 11,
"thread": 1
},
{
"enter": 3,
"file": 1,
"note": "Supress unrelevant warnings.",
"source": "ldv_invoke_test();",
"source node": 11,
"start line": 42,
"target node": 12,
"thread": 1
},
{
"file": 3,
"source": "int supress___0;",
"source node": 12,
"start line": 33,
"target node": 13,
"thread": 1
},
{
"file": 3,
"note": "This test is intended to only the fact that callbacks are called. Supress rest warnings.",
"source": "supress___0 = 1;",
"source node": 13,
"start line": 34,
"target node": 14,
"thread": 1
},
{
"file": 3,
"return": 3,
"source": "return;",
"source node": 14,
"start line": 35,
"target node": 15,
"thread": 1
},
{
"enter": 5,
"entry_point": "Register USB callbacks. (Relevant to 'ldv_driver')",
"file": 1,
"source": "ldv_emg_usb_register_driver(&ldv_driver, &__this_module, \"usb_invoke\");",
"source node": 15,
"start line": 43,
"target node": 16,
"thread": 1
},
{
"action": 0,
"assumption": "arg0 == 6849LL; ((signed long long int)(&(arg0->dynids))) == 6929LL; ((signed long long int)(&(arg0->dynids.lock))) == 6929LL; ((signed long long int)(&(arg0->dynids.lock.__annonCompField20))) == 6929LL; ((signed long long int)(&(arg0->dynids.list))) == 7001LL; ((signed long long int)(&(arg0->drvwrap))) == 7017LL; ((signed long long int)(&(arg0->drvwrap.driver))) == 7017LL;",
"assumption scope": 5,
"file": 5,
"source": "struct usb_driver *ldv_2_usb_driver;",
"source node": 16,
"start line": 54,
"target node": 17,
"thread": 1
},
{
"action": 2,
"file": 5,
"source": "ldv_2_usb_driver = arg0;",
"source node": 17,
"start line": 61,
"target node": 18,
"thread": 1
},
{
"action": 3,
"enter": 7,
"file": 5,
"source": "ldv_dispatch_register_2_3(ldv_2_usb_driver);",
"source node": 18,
"start line": 65,
"target node": 19,
"thread": 1
},
{
"assumption": "arg0 == 6849LL; ((signed long long int)(&(arg0->dynids))) == 6929LL; ((signed long long int)(&(arg0->dynids.lock))) == 6929LL; ((signed long long int)(&(arg0->dynids.lock.__annonCompField20))) == 6929LL; ((signed long long int)(&(arg0->dynids.list))) == 7001LL; ((signed long long int)(&(arg0->drvwrap))) == 7017LL; ((signed long long int)(&(arg0->drvwrap.driver))) == 7017LL;",
"assumption scope": 7,
"file": 5,
"source": "struct ldv_struct_usb_scenario_3 *cf_arg_3;",
"source node": 19,
"start line": 43,
"target node": 20,
"thread": 1
},
{
"condition": true,
"enter": 6,
"file": 5,
"source": "ldv_undef_int() != 0",
"source node": 20,
"start line": 43,
"target node": 21,
"thread": 1
},
{
"assumption": "tmp == 9283;",
"assumption scope": 6,
"file": 6,
"return": 6,
"source": "return __VERIFIER_nondet_int();",
"source node": 21,
"start line": 43,
"target node": 22,
"thread": 1
},
{
"enter": 8,
"file": 5,
"source": "cf_arg_3 = (struct ldv_struct_usb_scenario_3 *)ldv_xmalloc(16UL);",
"source node": 22,
"start line": 44,
"target node": 23,
"thread": 1
},
{
"assumption": "size == 16UL;",
"assumption scope": 8,
"file": 7,
"source": "void *res;",
"source node": 23,
"start line": 69,
"target node": 24,
"thread": 1
},
{
"assumption": "tmp == 9281LL;",
"assumption scope": 8,
"file": 7,
"source": "res = malloc(size);",
"source node": 24,
"start line": 69,
"target node": 25,
"thread": 1
},
{
"condition": true,
"file": 7,
"source": "__VERIFIER_assume((unsigned long)res != (unsigned long)((void *)0));",
"source node": 25,
"start line": 71,
"target node": 26,
"thread": 1
},
{
"condition": true,
"enter": 9,
"file": 7,
"source": "__VERIFIER_assume(ldv_is_err((void const *)res) == 0L);",
"source node": 26,
"start line": 72,
"target node": 27,
"thread": 1
},
{
"assumption": "ptr == 9281LL;",
"assumption scope": 9,
"file": 8,
"return": 9,
"source": "return (unsigned long)ptr > 4294967295UL;",
"source node": 27,
"start line": 22,
"target node": 28,
"thread": 1
},
{
"file": 7,
"return": 8,
"source": "return res;",
"source node": 28,
"start line": 74,
"target node": 29,
"thread": 1
},
{
"file": 5,
"source": "cf_arg_3->arg0 = arg0;",
"source node": 29,
"start line": 45,
"target node": 30,
"thread": 1
},
{
"enter": 10,
"entry_point": "Invoke usb callbacks. (Relevant to 'ldv_driver')",
"file": 5,
"source": "ldv_usb_scenario_3((void *)cf_arg_3);",
"source node": 30,
"start line": 46,
"target node": 31,
"thread": 3
},
{
"action": 0,
"assumption": "arg0 == 9281LL;",
"assumption scope": 10,
"file": 5,
"source": "struct usb_interface *ldv_3_resource;",
"source node": 31,
"start line": 89,
"target node": 32,
"thread": 3
},
{
"action": 0,
"file": 5,
"source": "struct usb_device *ldv_3_usb_device;",
"source node": 32,
"start line": 90,
"target node": 33,
"thread": 3
},
{
"action": 0,
"file": 5,
"source": "struct usb_device_id *ldv_3_ldv_param_1_3;",
"source node": 33,
"start line": 91,
"target node": 34,
"thread": 3
},
{
"action": 0,
"assumption": "ldv_3_container == 6849LL; ((signed long long int)(&(ldv_3_container->dynids))) == 6929LL; ((signed long long int)(&(ldv_3_container->dynids.lock))) == 6929LL; ((signed long long int)(&(ldv_3_container->dynids.lock.__annonCompField20))) == 6929LL; ((signed long long int)(&(ldv_3_container->dynids.list))) == 7001LL; ((signed long long int)(&(ldv_3_container->drvwrap))) == 7017LL; ((signed long long int)(&(ldv_3_container->drvwrap.driver))) == 7017LL;",
"assumption scope": 10,
"file": 5,
"source": "struct usb_driver *ldv_3_container;",
"source node": 34,
"start line": 92,
"target node": 35,
"thread": 3
},
{
"action": 0,
"file": 5,
"source": "struct pm_message *ldv_3_ldv_param_1_2;",
"source node": 35,
"start line": 93,
"target node": 36,
"thread": 3
},
{
"action": 0,
"file": 5,
"source": "int ldv_3_probe_retval;",
"source node": 36,
"start line": 94,
"target node": 37,
"thread": 3
},
{
"action": 0,
"file": 5,
"source": "struct ldv_struct_usb_scenario_3 *data;",
"source node": 37,
"start line": 95,
"target node": 38,
"thread": 3
},
{
"action": 0,
"assumption": "data == 9281LL;",
"assumption scope": 10,
"file": 5,
"source": "data = (struct ldv_struct_usb_scenario_3 *)arg0;",
"source node": 38,
"start line": 97,
"target node": 39,
"thread": 3
},
{
"action": 4,
"condition": true,
"file": 5,
"source": "__VERIFIER_assume((unsigned long)ldv_3_container == (unsigned long)ldv_emg_alias_ldv_driver_2);",
"source node": 39,
"start line": 103,
"target node": 40,
"thread": 3
},
{
"action": 4,
"condition": true,
"file": 5,
"source": "((unsigned long)data) != ((unsigned long)((struct ldv_struct_usb_scenario_3 *)0))",
"source node": 40,
"start line": 105,
"target node": 41,
"thread": 3
},
{
"action": 4,
"assumption": "ldv_3_container == 6849LL; ((signed long long int)(&(ldv_3_container->dynids))) == 6929LL; ((signed long long int)(&(ldv_3_container->dynids.lock))) == 6929LL; ((signed long long int)(&(ldv_3_container->dynids.lock.__annonCompField20))) == 6929LL; ((signed long long int)(&(ldv_3_container->dynids.list))) == 7001LL; ((signed long long int)(&(ldv_3_container->drvwrap))) == 7017LL; ((signed long long int)(&(ldv_3_container->drvwrap.driver))) == 7017LL;",
"assumption scope": 10,
"file": 5,
"source": "ldv_3_container = data->arg0;",
"source node": 41,
"start line": 106,
"target node": 42,
"thread": 3
},
{
"action": 4,
"enter": 11,
"file": 5,
"source": "ldv_free((void *)data);",
"source node": 42,
"start line": 107,
"target node": 43,
"thread": 3
},
{
"file": 7,
"source": "free(s);",
"source node": 43,
"start line": 64,
"target node": 44,
"thread": 3
},
{
"file": 7,
"return": 11,
"source": "return;",
"source node": 44,
"start line": 65,
"target node": 45,
"thread": 3
},
{
"action": 5,
"enter": 12,
"file": 5,
"source": "ldv_3_resource = (struct usb_interface *)ldv_xmalloc_unknown_size(0UL);",
"source node": 45,
"start line": 113,
"target node": 46,
"thread": 3
},
{
"file": 7,
"source": "void *res;",
"source node": 46,
"start line": 123,
"target node": 47,
"thread": 3
},
{
"assumption": "tmp == 2LL;",
"assumption scope": 12,
"file": 7,
"source": "res = external_allocated_data();",
"source node": 47,
"start line": 123,
"target node": 48,
"thread": 3
},
{
"condition": true,
"file": 7,
"source": "__VERIFIER_assume((unsigned long)res != (unsigned long)((void *)0));",
"source node": 48,
"start line": 125,
"target node": 49,
"thread": 3
},
{
"condition": true,
"enter": 9,
"file": 7,
"source": "__VERIFIER_assume(ldv_is_err((void const *)res) == 0L);",
"source node": 49,
"start line": 126,
"target node": 50,
"thread": 3
},
{
"assumption": "ptr == 9281LL;",
"assumption scope": 9,
"file": 8,
"return": 9,
"source": "return (unsigned long)ptr > 4294967295UL;",
"source node": 50,
"start line": 22,
"target node": 51,
"thread": 3
},
{
"file": 7,
"return": 12,
"source": "return res;",
"source node": 51,
"start line": 128,
"target node": 52,
"thread": 3
},
{
"action": 5,
"enter": 12,
"file": 5,
"source": "ldv_3_usb_device = (struct usb_device *)ldv_xmalloc_unknown_size(0UL);",
"source node": 52,
"start line": 114,
"target node": 53,
"thread": 3
},
{
"assumption": "res == 2LL;",
"assumption scope": 12,
"file": 7,
"source": "void *res;",
"source node": 53,
"start line": 123,
"target node": 54,
"thread": 3
},
{
"assumption": "tmp == 2LL;",
"assumption scope": 12,
"file": 7,
"source": "res = external_allocated_data();",
"source node": 54,
"start line": 123,
"target node": 55,
"thread": 3
},
{
"condition": true,
"file": 7,
"source": "__VERIFIER_assume((unsigned long)res != (unsigned long)((void *)0));",
"source node": 55,
"start line": 125,
"target node": 56,
"thread": 3
},
{
"condition": true,
"enter": 9,
"file": 7,
"source": "__VERIFIER_assume(ldv_is_err((void const *)res) == 0L);",
"source node": 56,
"start line": 126,
"target node": 57,
"thread": 3
},
{
"assumption": "ptr == 9281LL;",
"assumption scope": 9,
"file": 8,
"return": 9,
"source": "return (unsigned long)ptr > 4294967295UL;",
"source node": 57,
"start line": 22,
"target node": 58,
"thread": 3
},
{
"file": 7,
"return": 12,
"source": "return res;",
"source node": 58,
"start line": 128,
"target node": 59,
"thread": 3
},
{
"action": 5,
"file": 5,
"source": "ldv_3_resource->dev.parent = &ldv_3_usb_device->dev;",
"source node": 59,
"start line": 115,
"target node": 60,
"thread": 3
},
{
"action": 6,
"enter": 12,
"file": 5,
"source": "ldv_3_ldv_param_1_3 = (struct usb_device_id *)ldv_xmalloc_unknown_size(0UL);",
"source node": 60,
"start line": 141,
"target node": 61,
"thread": 3
},
{
"assumption": "res == 2LL;",
"assumption scope": 12,
"file": 7,
"source": "void *res;",
"source node": 61,
"start line": 123,
"target node": 62,
"thread": 3
},
{
"assumption": "tmp == 2LL;",
"assumption scope": 12,
"file": 7,
"source": "res = external_allocated_data();",
"source node": 62,
"start line": 123,
"target node": 63,
"thread": 3
},
{
"condition": true,
"file": 7,
"source": "__VERIFIER_assume((unsigned long)res != (unsigned long)((void *)0));",
"source node": 63,
"start line": 125,
"target node": 64,
"thread": 3
},
{
"condition": true,
"enter": 9,
"file": 7,
"source": "__VERIFIER_assume(ldv_is_err((void const *)res) == 0L);",
"source node": 64,
"start line": 126,
"target node": 65,
"thread": 3
},
{
"assumption": "ptr == 9281LL;",
"assumption scope": 9,
"file": 8,
"return": 9,
"source": "return (unsigned long)ptr > 4294967295UL;",
"source node": 65,
"start line": 22,
"target node": 66,
"thread": 3
},
{
"file": 7,
"return": 12,
"source": "return res;",
"source node": 66,
"start line": 128,
"target node": 67,
"thread": 3
},
{
"action": 7,
"file": 5,
"source": "ldv_pre_probe();",
"source node": 67,
"start line": 146,
"target node": 68,
"thread": 3
},
{
"action": 7,
"enter": 13,
"file": 5,
"source": "ldv_3_probe_retval = ldv_probe(ldv_3_resource, (struct usb_device_id const *)ldv_3_ldv_param_1_3);",
"source node": 68,
"start line": 148,
"target node": 69,
"thread": 3
},
{
"enter": 14,
"file": 1,
"source": "ldv_invoke_reached();",
"source node": 69,
"start line": 25,
"target node": 70,
"thread": 3,
"warn": "Test successfully passes as the callback call is reached."
},
{
"enter": 15,
"file": 3,
"note": "Test successfully passes as the callback call is reached.",
"source": "ldv_assert_linux_emg_test(0);",
"source node": 70,
"start line": 60,
"target node": 71,
"thread": 3
},
{
"assumption": "expr == 0;",
"assumption scope": 15,
"condition": true,
"file": 9,
"source": "expr == 0",
"source node": 71,
"start line": 4,
"target node": 72,
"thread": 3
},
{
"file": 9,
"source": "__VERIFIER_error();",
"source node": 72,
"start line": 5,
"target node": 73,
"thread": 3
}
],
"entry node": 0,
"files": [
"include/linux/export.h",
"ext-modules/usb_driver_v.1/usb_invoke.c",
"klever-core-work-dir/0/tests/47f9426/linux-emg-test/vtg/ext-modules/usb_driver_v.1/usb_invoke.ko/linux:emg:test/weaver/.tmp_usb_invoke.c.aux",
"linux/emg/test_model.c",
"linux/ldv/common.c",
"klever-core-work-dir/0/tests/47f9426/linux-emg-test/vtg/ext-modules/usb_driver_v.1/usb_invoke.ko/linux:emg:test/emg/environment_model.c",
"verifier/nondet.c",
"verifier/memory.c",
"linux/err.c",
"klever-core-work-dir/0/tests/47f9426/linux-emg-test/vtg/ext-modules/usb_driver_v.1/usb_invoke.ko/linux:emg:test/fvtp/bug kind funcs.c"
],
"funcs": [
"ldv_insmod_0",
"ldv_emg_ldv_init",
"ldv_init",
"ldv_invoke_test",
"ldv_usb_register_driver_7",
"ldv_emg_usb_register_driver",
"ldv_undef_int",
"ldv_dispatch_register_2_3",
"ldv_xmalloc",
"ldv_is_err",
"ldv_usb_scenario_3",
"ldv_free",
"ldv_xmalloc_unknown_size",
"ldv_probe",
"ldv_invoke_reached",
"ldv_assert_linux_emg_test",
"ldv_emg_wrapper_ldv_disconnect_2",
"ldv_emg_ldv_exit",
"ERR_PTR",
"PTR_ERR",
"IS_ERR",
"IS_ERR_OR_NULL",
"ldv_dev_get_drvdata_5",
"ldv_dev_set_drvdata_6",
"ldv_usb_deregister_8",
"ldv_initialize",
"ldv_invoke_callback",
"ldv_invoke_middle_callback",
"ldv_deregister",
"ldv_register",
"ldv_probe_up",
"ldv_release_down",
"ldv_release_completely",
"ldv_check_final_state",
"ldv_switch_to_interrupt_context",
"ldv_switch_to_process_context",
"main",
"ldv_emg_usb_deregister"
],
"nodes": [
[
null,
0
],
[
0,
1
],
[
1,
2
],
[
2,
3
],
[
3,
4
],
[
4,
5
],
[
5,
6
],
[
6,
7
],
[
7,
8
],
[
8,
9
],
[
9,
10
],
[
10,
11
],
[
11,
12
],
[
12,
13
],
[
13,
14
],
[
14,
15
],
[
15,
16
],
[
16,
17
],
[
17,
18
],
[
18,
19
],
[
19,
20
],
[
20,
21
],
[
21,
22
],
[
22,
23
],
[
23,
24
],
[
24,
25
],
[
25,
26
],
[
26,
27
],
[
27,
28
],
[
28,
29
],
[
29,
30
],
[
30,
31
],
[
31,
32
],
[
32,
33
],
[
33,
34
],
[
34,
35
],
[
35,
36
],
[
36,
37
],
[
37,
38
],
[
38,
39
],
[
39,
40
],
[
40,
41
],
[
41,
42
],
[
42,
43
],
[
43,
44
],
[
44,
45
],
[
45,
46
],
[
46,
47
],
[
47,
48
],
[
48,
49
],
[
49,
50
],
[
50,
51
],
[
51,
52
],
[
52,
53
],
[
53,
54
],
[
54,
55
],
[
55,
56
],
[
56,
57
],
[
57,
58
],
[
58,
59
],
[
59,
60
],
[
60,
61
],
[
61,
62
],
[
62,
63
],
[
63,
64
],
[
64,
65
],
[
65,
66
],
[
66,
67
],
[
67,
68
],
[
68,
69
],
[
69,
70
],
[
70,
71
],
[
71,
72
],
[
72,
null
]
],
"violation nodes": [
73
]
}
(1-1/3)