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:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user