|
From: Carl L. <ce...@us...> - 2017-09-22 15:28:45
|
Valgrind developers:
I have two users that have recently run into what appears to be the same
issue. One of the workloads is a video application, the other is a
float128 workload for the new Power 9 instructions. Both workloads fail
with the message:
Pool = TEMP, start 0x5861af28 curr 0x58adfa48 end 0x58adfa67 (size
5000000)
vex: the `impossible' happened:
VEX temporary storage exhausted.
Increase N_{TEMPORARY,PERMANENT}_BYTES and recompile.
I increased the N_TEMPORARY_BYTES and N_PERMANENT_BYTES #defines as
given below.
--- a/VEX/priv/main_util.c
+++ b/VEX/priv/main_util.c
@@ -55,10 +55,10 @@
#if defined(ENABLE_INNER)
/* 5 times more memory to be on the safe side: consider each
allocation is
8 bytes, and we need 16 bytes redzone before and after. */
-#define N_TEMPORARY_BYTES (5*5000000)
+#define N_TEMPORARY_BYTES (5*2000000000)
static Bool mempools_created = False;
#else
-#define N_TEMPORARY_BYTES 5000000
+#define N_TEMPORARY_BYTES 2000000000
#endif
static HChar temporary[N_TEMPORARY_BYTES]
__attribute__((aligned(REQ_ALIGN)));
@@ -70,9 +70,9 @@ static ULong temporary_bytes_allocd_TOT = 0;
#if defined(ENABLE_INNER)
/* See N_TEMPORARY_BYTES */
-#define N_PERMANENT_BYTES (5*10000)
+#define N_PERMANENT_BYTES (5*100000)
#else
-#define N_PERMANENT_BYTES 10000
+#define N_PERMANENT_BYTES 100000
Once these were increased both workloads then hit the error:
x264 [info]: profile High, level 3.1
vex: priv/host_generic_reg_alloc3.c:470 (doRegisterAllocation_v3):
Assertion `instrs_in->arr_used <= 15000' failed.
vex storage: T total 373013384 bytes allocated
vex storage: P total 192 bytes allocated
>From the comments in the code, it doesn't look like increasing the 1500
is a viable option. It appears that something is just generating too
much stuff. I am wondering if anyone can give me some idea what is going
on here. It all appears to be architecture independent code. Any
suggestions on how to go about debugging this would be helpful. Thanks.
Carl Love
|