BUGFIX: dirtyPageTable was accidentally using the deprecated red black tree, which leads to in-memory corruption and crashes. Fixed this, and set the deprecated red black tree to issue a warning on startup if it is used
This commit is contained in:
parent
09d113246c
commit
81d2c1590e
3 changed files with 12 additions and 5 deletions
|
@ -5,8 +5,8 @@
|
||||||
* Author: sears
|
* Author: sears
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stasis/redblack.h>
|
|
||||||
#include <stasis/common.h>
|
#include <stasis/common.h>
|
||||||
|
#include <stasis/redblack.h>
|
||||||
#include <stasis/flags.h>
|
#include <stasis/flags.h>
|
||||||
#include <stasis/dirtyPageTable.h>
|
#include <stasis/dirtyPageTable.h>
|
||||||
#include <stasis/page.h>
|
#include <stasis/page.h>
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
#define _GNU_SOURCE
|
#include <config.h>
|
||||||
#include <stasis/common.h>
|
#include <stasis/common.h>
|
||||||
#undef STLSEARCH // XXX
|
#undef STLSEARCH // XXX
|
||||||
#include <stasis/io/rangeTracker.h>
|
|
||||||
#include <stasis/redblack.h>
|
#include <stasis/redblack.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include <stasis/io/rangeTracker.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ static char rcsid[]="$Id$";
|
||||||
#include <stasis/common.h>
|
#include <stasis/common.h>
|
||||||
#undef STLSEARCH
|
#undef STLSEARCH
|
||||||
#include <stasis/redblack.h>
|
#include <stasis/redblack.h>
|
||||||
|
#include <stdio.h>
|
||||||
#define assert(expr)
|
#define assert(expr)
|
||||||
|
|
||||||
/* Uncomment this if you would rather use a raw sbrk to get memory
|
/* Uncomment this if you would rather use a raw sbrk to get memory
|
||||||
|
@ -138,6 +138,11 @@ rbinit(int (*cmp)(const void *, const void *, const void *), const void *config)
|
||||||
RB_STATIC struct RB_ENTRY(tree) *RB_ENTRY(init)(void)
|
RB_STATIC struct RB_ENTRY(tree) *RB_ENTRY(init)(void)
|
||||||
#endif /* RB_CUSTOMIZE */
|
#endif /* RB_CUSTOMIZE */
|
||||||
{
|
{
|
||||||
|
static int warned = 0;
|
||||||
|
if(!warned) {
|
||||||
|
printf("Warning: initting redblack.c tree. These are known to lead to crashes w/ stasis\n");
|
||||||
|
warned = 1;
|
||||||
|
}
|
||||||
struct RB_ENTRY(tree) *retval;
|
struct RB_ENTRY(tree) *retval;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue