From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: tarantool-patches@freelists.org Subject: [tarantool-patches] [PATCH 1/1] test: drop invalid assert from swim test transport Date: Tue, 30 Apr 2019 02:27:04 +0300 [thread overview] Message-ID: <906fb352f231ce3c2f22a176f04d42649d180dda.1556579734.git.v.shpilevoy@tarantool.org> (raw) The assertion was checking that a next event object is not the same as the previous, but 1) the previous was deleted already to this moment; 2) comparison was done by pointer The first problem would be enough to drop it. The second is already curious - looks like after the old event was deleted, the next event was allocated right on the same memory. This is why their pointers are equal and the assertion fails. For example, swim_timer_event_process() - it deletes the event object and calls ev_invoke() which can generate a new event on the just freed memory. --- test/unit/swim_test_ev.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/unit/swim_test_ev.c b/test/unit/swim_test_ev.c index 135f20107..3c2eae039 100644 --- a/test/unit/swim_test_ev.c +++ b/test/unit/swim_test_ev.c @@ -283,7 +283,7 @@ swim_ev_timer_stop(struct ev_loop *loop, struct ev_timer *base) void swim_test_ev_do_loop_step(struct ev_loop *loop) { - struct swim_event *next_e, *e = event_heap_top(&event_heap); + struct swim_event *e = event_heap_top(&event_heap); if (e != NULL) { assert(e->deadline >= watch); /* Multiple events can have the same deadline. */ @@ -291,9 +291,7 @@ swim_test_ev_do_loop_step(struct ev_loop *loop) say_verbose("Loop watch %f", watch); do { e->process(e, loop); - next_e = event_heap_top(&event_heap); - assert(e != next_e); - e = next_e; + e = event_heap_top(&event_heap); } while (e != NULL && e->deadline == watch); } } -- 2.20.1 (Apple Git-117)
next reply other threads:[~2019-04-29 23:27 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-29 23:27 Vladislav Shpilevoy [this message] 2019-04-29 23:27 ` [tarantool-patches] " Vladislav Shpilevoy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=906fb352f231ce3c2f22a176f04d42649d180dda.1556579734.git.v.shpilevoy@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [tarantool-patches] [PATCH 1/1] test: drop invalid assert from swim test transport' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox