1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-25 17:57:42 +03:00

s3:share_mode_lock: reproduce problem with stale disconnected share mode entries

This reproduces the origin of "PANIC: assert failed in get_lease_type()"
(https://bugzilla.samba.org/show_bug.cgi?id=14428).

share_mode_cleanup_disconnected() removes disconnected entries from
leases.tdb and brlock.tdb but not from locking.tdb.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14428

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
Stefan Metzmacher 2020-08-28 14:37:59 +02:00 committed by Volker Lendecke
parent 560fe7b38f
commit 444f2bedf7
3 changed files with 29 additions and 0 deletions

View File

@ -0,0 +1 @@
^samba3.blackbox.durable_v2_delay.bug.14428

View File

@ -1730,6 +1730,20 @@ bool share_mode_cleanup_disconnected(struct file_id fid,
data->have_share_modes = false;
data->modified = true;
/*
* This is a temporary reproducer for the origin of
* https://bugzilla.samba.org/show_bug.cgi?id=14428
* "PANIC: assert failed in get_lease_type()"
*
* This will be removed again once the bug is demonstrated
* and fixed.
*/
TALLOC_FREE(state.lck);
state.lck = get_existing_share_mode_lock(frame, fid);
if (state.lck != NULL) {
DBG_ERR("Reproduced BUG#14428\n");
}
ret = true;
done:
talloc_free(frame);

View File

@ -17,12 +17,26 @@ testit "durable_v2_delay.durable_v2_reconnect_delay" $VALGRIND \
smb2.durable-v2-delay.durable_v2_reconnect_delay ||
failed=$(expr $failed + 1)
SMBD_LOG_FILES="$SMBD_TEST_LOG"
if [ $SMBD_DONT_LOG_STDOUT -eq 1 ]; then
_SMBD_LOG_FILE=$(dirname $SMBD_TEST_LOG)/logs/log.smbd
SMBD_LOG_FILES="$SMBD_LOG_FILES $_SMBD_LOG_FILE"
fi
bug_count_0=$(grep 'Reproduced BUG#14428' $SMBD_LOG_FILES | wc -l)
testit "durable_v2_delay.durable_v2_reconnect_delay_msec" $VALGRIND \
$BINDIR/smbtorture //$SERVER_IP/durable \
-U$USERNAME%$PASSWORD \
smb2.durable-v2-delay.durable_v2_reconnect_delay_msec ||
failed=$(expr $failed + 1)
bug_count_1=$(grep 'Reproduced BUG#14428' $SMBD_LOG_FILES | wc -l)
testit "bug.14428 bug_count_0[$bug_count_0] bug_count_1[$bug_count_1]" \
test $bug_count_0 -eq $bug_count_1 ||
failed=$(expr $failed + 1)
rm $delay_inject_conf
testok $0 $failed