xt_exit_row_locks() tries to release unallocated locks
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
Fix Released
|
Medium
|
Vladislav Vaintroub | ||
PBXT |
Fix Committed
|
Undecided
|
Vladimir Kolesnikov |
Bug Description
Sometimes (e.g during table creation), xt_exit_row_locks() is called without the corresponding xt_init_row_locks() .
This leads to at attempt to release unallocated locks in
xt_spinlock_
This makes Windows application verifier unhappy on x64.
Quick fix:
== verändert Datei storage/
--- storage/
+++ storage/
@@ -726,11 +726,15 @@
rl->
rl->
}
+ rl->valid = 1;
return OK;
}
void xt_exit_
{
+ if (!rl->valid)
+ return;
+
for (int i=0; i<XT_ROW_
xt_spinlock_
rl->
@@ -741,6 +745,7 @@
rl-
}
}
+ rl->valid = 0;
}
/*
=== verändert Datei storage/
--- storage/
+++ storage/
@@ -658,6 +658,7 @@
struct XTLockWait;
typedef struct XTRowLocks {
+ int valid;
XTLockGroupRec rl_groups[
void xt_cancel_
Related branches
- PBXT Core: Pending requested
-
Diff: 171 lines (+22/-9)9 files modifiedsrc/cache_xt.cc (+5/-0)
src/discover_xt.cc (+1/-1)
src/ha_pbxt.cc (+2/-2)
src/heap_xt.cc (+1/-0)
src/lock_xt.cc (+5/-0)
src/lock_xt.h (+1/-0)
src/table_xt.cc (+6/-4)
src/xaction_xt.cc (+0/-1)
src/xt_defs.h (+1/-1)
description: | updated |
Changed in pbxt: | |
status: | New → Fix Committed |
assignee: | nobody → Vladimir Kolesnikov (vkolesnikov) |
Changed in maria: | |
status: | New → Fix Released |
Fixed in MariaDB 5.2.7