Tarantool development patches archive
 help / color / mirror / Atom feed
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)

             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