Commit e1c1627fac383f2858dd5975e434c5787e411258

tokyovania 2022-08-08T16:55:48

fix race condition in rtbuf_sort

diff --git a/cli/configure b/cli/configure
index ab65ac0..4ef5b51 100755
--- a/cli/configure
+++ b/cli/configure
@@ -22,7 +22,7 @@ CPPFLAGS="$CPPFLAGS -DVER=$VER"
 echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
 
 if [ x"$DEBUG" = x"yes" ]; then
-    CFLAGS="-DDEBUG -O0 -ggdb"
+    CFLAGS="-DDEBUG -O0 -ggdb -g3"
 else
     CFLAGS="-DNDEBUG -O3"
 fi
diff --git a/librtbuf/data.c b/librtbuf/data.c
index 76656c3..6298b2f 100644
--- a/librtbuf/data.c
+++ b/librtbuf/data.c
@@ -37,7 +37,6 @@ int libdata_init ()
 {
   data_alloc_init(&g_data_alloc_alloc, &g_data_alloc_type,
                   DATA_ALLOC_MAX, 0, (f_data_clean*) data_alloc_clean);
-  assert(g_data_alloc_alloc);
   g_data_alloc = g_data_alloc_alloc.mem;
   g_data_type_alloc = data_alloc_new(&g_data_type_type, DATA_TYPE_MAX,
                                      0, 0);
diff --git a/librtbuf/rtbuf.c b/librtbuf/rtbuf.c
index c570bb7..5b53224 100644
--- a/librtbuf/rtbuf.c
+++ b/librtbuf/rtbuf.c
@@ -403,7 +403,8 @@ void rtbuf_sort ()
   g_rtbuf_sorted_n = 0;
   while ((ptr = rtbuf_in_stack_top(&rvs))) {
     if (ptr->in == g_rtbuf[ptr->rtb].proc->in_n) {
-      g_rtbuf_sorted[g_rtbuf_sorted_n++] = ptr->rtb;
+      g_rtbuf_sorted[g_rtbuf_sorted_n] = ptr->rtb;
+      g_rtbuf_sorted_n++;
       rtbuf_in_stack_pop(&rvs);
     } else
       rtbuf_sort_push_child(&rvs, ptr);