Calling g_main_loop_run(x);g_main_loop_unref(x); is use-after-free
evolution-calendar-factory-subprocess.c:main() calls
g_main_loop_run (loop); // calls g_main_loop_unref (loop); just before it returns ⇒ g_free(loop)
g_main_loop_unref (loop); // calls g_free(loop)
The static analyzer say for the last statement — Use of memory after it is freed
Likewise in e-user-prompter.c:user_prompter_prompt_thread() line 298-300; addressbook-export.c:main() lines 1007-1010; test-book-meta-backend.c:test_with_main_loop() lines 1863-1866; test-cal-meta-backend.c:test_with_main_loop() lines 3995-3998.
In e-test-server-utils.c:e_test_server_utils_teardown() is executed
assert_object_finalized (fixture, E_TEST_SERVER_NONE); // calls g_main_loop_run (fixture->loop); ↦ g_free(fixture->loop);
g_main_loop_unref (fixture->loop); // calls g_free(fixture->loop)
In e-user-prompter.c:e_user_prompter_extension_prompt_sync() is executed
closure = e_async_closure_new ();
result = e_async_closure_wait (closure); // possibly executes g_main_loop_run (closure->loop); which frees closure->loop
e_async_closure_free (closure); // calls again g_main_loop_unref (closure->loop); - data was freed again
In e-source.c:source_remove_sync() is executed
g_main_context_pop_thread_default (remove_context->main_context); // calls g_main_context_unref (remove_context->main_context); ⇒ g_free(remove_context->main_context)
remove_context_free (remove_context); // calls g_main_context_unref (remove_context->main_context); ⇒ g_free(remove_context->main_context)
In camel-async-closure.c:camel_async_closure_free() calls
g_main_context_pop_thread_default (closure->context); //calls g_main_context_unref(closure->context); before it returns
g_main_context_unref (closure->context);
The static analyzer say for the last statement — Use of memory after it is freed