---
** [tickets:#3337] mds: mdstest api coredump when when use MDS queue
ownership**
**Status:** assigned
**Milestone:** 5.23.07
**Created:** Wed Apr 26, 2023 09:19 AM UTC by PhanTranQuocDat
**Last Updated:** Wed Apr 26, 2023 09:19 AM UTC
**Owner:** PhanTranQuocDat
Steps to reproduce
------------------
run: mdstest 18
Observed behaviour
------------------
Test case failed with "double free" report.
CAUSE:
-------------------
When receive message, mds will go through process to send data to upper layer.
If mds queue ownership is used, message will be put to mailbox through
mds_mcm_mailbox_post() and only be read when invoke mds_mailbox_proc().
After put message to mailbox, the send-data process is considered done, mds
will delete the buffer previously allocated. This delete is wrong as latter,
when message is invoke through mds_mailbox_proc, the receiver will read
(invalid read) and try to free the message once again, causing "double free"
error.
Error messages
------------------
backtrace:
Thread 1 (Thread 0x7f2aa6d2cb00 (LWP 3398)):
**#0 GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
set = {val = {0, 0, 0, 206158430210, 0, 139821157765124,
562945658454528, 139821157765124, 139821164183276, 139821157854076,
139821164183248, 281470681874431, 131071, 6794816100368768768, 564113889561918,
139821049716696}}
pid = <optimized out>
tid = <optimized out>
ret = <optimized out>
#1 0x00007f2aa60fe7f1 in GI_abort () at abort.c:79
save_stage = 1
act = {sigaction_handler = {sa_handler = 0xa03bffff, sa_sigaction =
0xa03bffff}, sa_mask = {val = {1, 564113889561918, 139821157846167,
2199023255553, 139821049716586, 4295032831, 564113889561918, 0,
282333970170112, 2, 2563, 3390, 139821164183768, 1, 139821164183744,
139821164184032}}, sa_flags = -1496137536, sa_restorer = 0x1000}
sigs = {val = {32, 0 <repeats 15 times>}}
cnt = <optimized out>
set = <optimized out>
cnt = <optimized out>
set = <optimized out>
#2 0x00007f2aa6147837 in libc_message (action=action@entry=do_abort,
fmt=fmt@entry=0x7f2aa6274a7b "%s\n") at ../sysdeps/posix/libc_fatal.c:181
ap = {{gp_offset = 24, fp_offset = 0, overflow_arg_area =
0x7f2aa6d2c1f0, reg_save_area = 0x7f2aa6d2c180}}
fd = <optimized out>
list = <optimized out>
nlist = <optimized out>
cp = <optimized out>
written = <optimized out>
on_2 = <optimized out>
next = <optimized out>
str = <optimized out>
len = <optimized out>
newp = <optimized out>
iov = <optimized out>
total = <optimized out>
cnt = <optimized out>
buf = <optimized out>
wp = <optimized out>
old = <optimized out>
cnt = <optimized out>
result = <optimized out>
#3 0x00007f2aa614e8ba in malloc_printerr (str=str@entry=0x7f2aa6276740 "double
free or corruption (fasttop)") at malloc.c:5342
No locals.
#4 0x00007f2aa6259c4b in _int_free (have_lock=0, p=0x7f2aa0002160,
av=0x7f2aa0000020) at malloc.c:4260
idx = <optimized out>
old = <optimized out>
idx = <optimized out>
old = <optimized out>
old2 = <optimized out>
old2 = <optimized out>
fb = <optimized out>
nextsize = <optimized out>
nextinuse = <optimized out>
prevsize = <optimized out>
fwd = <optimized out>
size = <optimized out>
nextchunk = <optimized out>
bck = <optimized out>
size = <optimized out>
fb = <optimized out>
nextchunk = <optimized out>
nextsize = <optimized out>
nextinuse = <optimized out>
prevsize = <optimized out>
bck = <optimized out>
fwd = <optimized out>
tc_idx = <optimized out>
e = <optimized out>
tmp = <optimized out>
idx = <optimized out>
old = <optimized out>
old2 = <optimized out>
fail = <optimized out>
ignore1 = <optimized out>
ignore2 = <optimized out>
ignore3 = <optimized out>
ignore = <optimized out>
atg1_result = <optimized out>
ret = <optimized out>
ret = <optimized out>
ret = <optimized out>
ret = <optimized out>
ignore1 = <optimized out>
ignore2 = <optimized out>
ignore3 = <optimized out>
heap = <optimized out>
ignore = <optimized out>
#5 GI_libc_free (mem=0x7f2aa0002170) at malloc.c:3134
ar_ptr = 0x7f2aa0000020
p = 0x7f2aa0002160
hook = <optimized out>
mem = 0x7f2aa0002170
ar_ptr = <optimized out>
p = <optimized out>
hook = <optimized out>
x = <optimized out>
ar_ptr = <optimized out>
p = <optimized out>
hook = <optimized out>
ar_ptr = <optimized out>
p = <optimized out>
hook = <optimized out>
x = <optimized out>
#6 tcache_thread_shutdown () at malloc.c:2979
e = 0x7f2aa0002170
i = <optimized out>
tcache_tmp = <optimized out>
i = <optimized out>
tcache_tmp = <optimized out>
e = <optimized out>
#7 arena_thread_freeres () at arena.c:950
a = <optimized out>
PRETTY_FUNCTION = "arena_thread_freeres"
#8 0x00007f2aa625a562 in libc_thread_freeres () at thread-freeres.c:29
ptr = 0x7f2aa64a5740
<elf_set_libc_thread_subfreeres_element_arena_thread_freeres>
#9 0x00007f2aa64b6700 in start_thread (arg=0x7f2aa6d2cb00) at
pthread_create.c:476
pd = 0x7f2aa6d2cb00
now = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139821164186368,
-4330361106019401868, 139821164184448, 1, 0, 140731572523136,
4445679699519848308, 4445680733411852148}, mask_was_saved = 0}}, priv = {pad =
{0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#10 0x00007f2aa61df61f in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.**
---
Sent from sourceforge.net because [email protected] is
subscribed to https://sourceforge.net/p/opensaf/tickets/
To unsubscribe from further messages, a project admin can change settings at
https://sourceforge.net/p/opensaf/admin/tickets/options. Or, if this is a
mailing list, you can unsubscribe from the mailing list._______________________________________________
Opensaf-tickets mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-tickets