Changeset: 77a022e28a56 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=77a022e28a56
Modified Files:
        gdk/gdk_tracer.c
Branch: Jun2020
Log Message:

Fux deadlock when using call logging.setlayerlevel.


diffs (41 lines):

diff --git a/gdk/gdk_tracer.c b/gdk/gdk_tracer.c
--- a/gdk/gdk_tracer.c
+++ b/gdk/gdk_tracer.c
@@ -143,6 +143,13 @@ set_level_for_layer(int layer, int lvl)
        const char *tok = NULL;
        log_level_t level = (log_level_t) lvl;
 
+       // make sure we initialize before changing the component level
+       MT_lock_set(&lock);
+       if (file_name[0] == 0) {
+               _GDKtracer_init_basic_adptr();
+       }
+       MT_lock_unset(&lock);
+
        for (int i = 0; i < COMPONENTS_COUNT; i++) {
                if (layer == MDB_ALL) {
                        lvl_per_component[i] = level;
@@ -286,6 +293,13 @@ GDKtracer_set_component_level(const char
                return GDK_FAIL;
        }
 
+       // make sure we initialize before changing the component level
+       MT_lock_set(&lock);
+       if (file_name[0] == 0) {
+               _GDKtracer_init_basic_adptr();
+       }
+       MT_lock_unset(&lock);
+
        lvl_per_component[component] = level;
 
        return GDK_SUCCEED;
@@ -481,7 +495,8 @@ GDKtracer_log(const char *file, const ch
        }
        MT_lock_set(&lock);
        if (file_name[0] == 0) {
-               _GDKtracer_init_basic_adptr();
+               MT_lock_unset(&lock);
+               return;
        }
        MT_lock_unset(&lock);
        if (syserr)
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to