Avoid a race condition 03/298803/2
authorMichal Bloch <m.bloch@samsung.com>
Wed, 6 Sep 2023 14:51:31 +0000 (16:51 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Fri, 15 Sep 2023 13:22:44 +0000 (15:22 +0200)
Change-Id: I4c546d8e3479b7498c9ed2def85b7f710672b055

tests/dlog_test.in
tests/test_libdlogutil.c

index 607d2fc..d21db00 100644 (file)
@@ -1176,6 +1176,7 @@ if [ "$type" != "zero-copy" ]; then # No dynamic filters in zero-copy
 fi
 
 LOG_DETAILS="testing if libdlogutil clears the buffer correctly"
+sleep 1 # make sure the earlier logs are handled so that they don't end up handled after the clear
 test_libdlogutil clear $LIBDLOGUTIL_CORRECT_PID $type && ok || fail
 
 if [ "$(date +%Y)" -le 2000 ]; then
index e4383af..38119eb 100644 (file)
@@ -389,7 +389,6 @@ void traits_main(backend_t backend)
 
 void clear_main(void)
 {
-
        dlogutil_config_s *c = dlogutil_config_create();
        assert(c);
        assert(dlogutil_config_buffer_add(c, LOG_ID_MAIN) == 0);
@@ -400,6 +399,12 @@ void clear_main(void)
        assert(dlogutil_buffer_clear(s, LOG_ID_MAIN) == 0);
        dlogutil_state_destroy(s);
 
+       // avoid a race condition; let the clear take place
+       nanosleep(&(struct timespec) {
+               .tv_sec = 1,
+               .tv_nsec = 0,
+       }, NULL);
+
        assert(dlogutil_config_mode_set_dump(c, DLOGUTIL_MAX_DUMP_SIZE) == 0);
        assert(dlogutil_config_connect(c, &s) == 0);
        dlogutil_entry_s *e;