<div dir="ltr">hi,<div><br></div><div>I'm currently using sheepodg v0.8.3, configure with --enable-debug & start sheep with journal directory.</div><div><br></div><div><br></div><div>during `journal_file_init` progress, journal thread is created. </div><div>but the `tid_max` is not initialized until `wq_trace_init` is called,</div><div>which is called just after journal init progress.</div><div>Thus the journal thread enter into infinite loop when trace is enabled.</div><div>(below is related code)</div><div><br></div><div><br></div><div><div>static void trace_set_tid_map(int tid)</div><div>{</div><div>        sd_mutex_lock(&tid_map_lock);</div><div>        if (tid > tid_max) {</div><div>                size_t old_tid_max = tid_max;</div><div><br></div><div>                /* enlarge bitmap size */</div><div>                ## because tid_max is not initialized (which is 0), the journal thread enter into loop </div><div>                while (tid > tid_max)</div><div>                        tid_max *= 2;</div><div><br></div><div>                tid_map = alloc_bitmap(tid_map, old_tid_max, tid_max);</div><div>        }</div><div>        set_bit(tid, tid_map);</div><div>        sd_mutex_unlock(&tid_map_lock);</div><div>}</div></div><div><br></div><div>I think `tid_max` should be initialized to TID_MAX_DEFAULT in to avoid issue.</div><div>thus, change lib/work.c</div><div><br></div><div><div>-static size_t tid_max;</div></div><div>+static size_t tid_max = TID_MAX_DEFAULT</div><div><br></div><div>& delete related code in wq_trace_init</div><div><br></div><div>Correct me if I'm wrong.</div><div><br></div><div><br></div><div>Thanks</div></div>