On 4/4/2023 2:43 PM, Fotis Panagiotopoulos wrote:
Sorry, maybe it was a bad example.
Here is a much more minimal config that you can run directly.
https://pastebin.com/x775E7iF
For me, it crashes almost immediately after starting.
Trying again with 4ff4562401401a3a86c74cb2bda9a1a2b8d94e6d and it moves
along.
Okay, I was able to replicate the error with that configuration, but I
don't know what it means since I don't understand the kazan stuff:
...
ostest_main: setenv(Variable3, BadValue2, FALSE)
show_variable: Variable=Variable1 has value=GoodValue1
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
kasan_report: kasan detected a read access error, address at
0x7ffff3db52c8, size is 8
Breakpoint 1, _assert (
filename=0x555555576863 <syslog+159> "\220H\201\304",
<incomplete sequence \350>, linenum=0,
msg=0x7ffff3de8930 "\001") at misc/assert.c:423
423 {
(gdb) gt
Undefined command: "gt". Try "help".
(gdb) bt
#0 _assert (filename=0x555555576863 <syslog+159> "\220H\201\304",
<incomplete sequence \350>,
linenum=0, msg=0x7ffff3de8930 "\001") at misc/assert.c:423
#1 0x000055555557053e in __assert (filename=0x5555555bd6d0
"kasan/kasan.c", linenum=114,
msg=0x5555555bd735 "panic") at assert/lib_assert.c:36
#2 0x000055555557798e in kasan_report (addr=0x7ffff3db52c8, size=8,
is_write=false)
at kasan/kasan.c:114
#3 0x0000555555577f84 in __asan_loadN_noabort (addr=0x7ffff3db52c8,
size=8) at kasan/kasan.c:307
#4 0x000055555557802b in __asan_load8_noabort (addr=0x7ffff3db52c8)
at kasan/kasan.c:331
#5 0x000055555555d6e8 in nxsched_get_tcb (pid=3) at
sched/sched_gettcb.c:79
#6 0x000055555555a258 in nxsem_checkholder (sem=0x7ffff3db5000) at
semaphore/sem_holder.c:1106
#7 0x000055555556eafe in nxsem_post (sem=0x7ffff3db5000) at
semaphore/sem_post.c:85
#8 0x000055555556edfb in sem_post (sem=0x7ffff3db5000) at
semaphore/sem_post.c:256
#9 0x0000555555570ad5 in nxmutex_unlock (mutex=0x7ffff3db5000) at
misc/lib_mutex.c:340
#10 0x000055555557899b in mm_unlock (heap=0x7ffff3db5000) at
mm_heap/mm_lock.c:117
The call to mm_unlock() is thing that kicks of the assertion check.
nxsem_checkholder() is the assertion check
(gdb) up
#1 0x000055555557053e in __assert (filename=0x5555555bd6d0
"kasan/kasan.c", linenum=114,
msg=0x5555555bd735 "panic") at assert/lib_assert.c:36
36 _assert(filename, linenum, msg);
(gdb) up
#2 0x000055555557798e in kasan_report (addr=0x7ffff3db52c8, size=8,
is_write=false)
at kasan/kasan.c:114
114 PANIC();
(gdb) up
#3 0x0000555555577f84 in __asan_loadN_noabort (addr=0x7ffff3db52c8,
size=8) at kasan/kasan.c:307
307 kasan_report(addr, size, false);
(gdb) up
#4 0x000055555557802b in __asan_load8_noabort (addr=0x7ffff3db52c8)
at kasan/kasan.c:331
331 __asan_loadN_noabort(addr, 8);
The following is the logic that triggered __asan_loadN_noabort(). But I
don't see any problem. Could this be a false alarm?
(gdb) up
#5 0x000055555555d6e8 in nxsched_get_tcb (pid=3) at
sched/sched_gettcb.c:79
79 if (g_pidhash[hash_ndx] != NULL && pid ==
g_pidhash[hash_ndx]->pid)
(gdb) p hash_ndx
$8 = 3
(gdb) p pid
$9 = 3
(gdb) p g_pidhash[hash_ndx]->pid
$10 = 3
(gdb) up
#6 0x000055555555a258 in nxsem_checkholder (sem=0x7ffff3db5000) at
semaphore/sem_holder.c:1106
1106 htcb = nxsched_get_tcb(tid);
(gdb) p tid
$11 = 3
Can you explain what happened when __asan_loadN_noabort was called.
That is the error. As far as I can tell, everything else looks good to me.