1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00

Bug#16414644 ASSERTION FAILED: SIZE == PFS_ALLOCATED_MEMORY

Before this fix, the command
  SHOW ENGINE PERFORMANCE_SCHEMA STATUS
could report wrong amount of memory allocated,
when the amount of memory used exceeds 4GB.

The problem is that size computations are not done using size_t,
so that overflows do occur, truncating the results.

This fix compute memory sizes properly with size_t.

Tested manually.

No test script provided, as the script would need to allocate too much 
memory for the test.
This commit is contained in:
Marc Alff
2013-02-28 13:19:15 +01:00
parent 94b1b6533d
commit 99f83c6684
3 changed files with 8 additions and 8 deletions

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
/* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -512,7 +512,7 @@ bool pfs_show_status(handlerton *hton, THD *thd,
uint buflen;
const char *name;
int i;
uint size;
size_t size;
DBUG_ENTER("pfs_show_status");
@@ -526,7 +526,7 @@ bool pfs_show_status(handlerton *hton, THD *thd,
if (stat != HA_ENGINE_STATUS)
DBUG_RETURN(false);
uint total_memory= 0;
size_t total_memory= 0;
for (i=0; /* empty */; i++)
{
@@ -763,7 +763,7 @@ bool pfs_show_status(handlerton *hton, THD *thd,
break;
}
buflen= int10_to_str(size, buf, 10) - buf;
buflen= longlong10_to_str(size, buf, 10) - buf;
if (print(thd,
PERFORMANCE_SCHEMA_str.str, PERFORMANCE_SCHEMA_str.length,
name, strlen(name),