Julius wrote:
With one file however (GOODTIME.AVI from the win95 cd) I get this error after about a second: err:heap:HEAP_ValidateInUseArena Heap 0x110000: in-use arena 0x184420 next block has PREV_FREE flag non enough memory
I have no idea where this comes from and why it happens. (It appears to be unrelated to the memcpy call in avifile.c around line 1114.) With +heap I also get this before the error: HIGHPERF/GOODTIME.AVI: heap.c:403: HEAP_GetPtr: Controletest '0' faalt. (the assert fails)
Sounds like heap corruption. You might want to cut down the file to the shortest one that causes the crash, then go after it (possibly using valgrind or the like) to look for the error.
Does your implementation of avifil32 and friends work properly on windows?
Dan Kegel wrote:
Julius wrote:
With one file however (GOODTIME.AVI from the win95 cd) I get this error after about a second: err:heap:HEAP_ValidateInUseArena Heap 0x110000: in-use arena 0x184420 next block has PREV_FREE flag non enough memory
I have no idea where this comes from and why it happens. (It appears to be unrelated to the memcpy call in avifile.c around line 1114.) With +heap I also get this before the error: HIGHPERF/GOODTIME.AVI: heap.c:403: HEAP_GetPtr: Controletest '0' faalt. (the assert fails)
Sounds like heap corruption. You might want to cut down the file to the shortest one that causes the crash, then go after it (possibly using valgrind or the like) to look for the error.
With valgrind I was able to find the problem actually happens when AVIFILE_ReadBlock is called and a new block is about to be read. There doesn't seem to be anything special about this however, as for the previous blocks (and different files) it works just fine.
Does your implementation of avifil32 and friends work properly on windows?
It appears this is not trivial to test. I had to include Wine's advapi32.dll in addition to avifil32.dll and then I got an error about a missing Wine symbol in ntdll.dll. I understand this means I cannot trivially use this Wine dll on Windows.
Thanks, Julius
On Mon, Nov 16, 2009 at 10:52:04AM +0100, Julius Schwartzenberg wrote:
Dan Kegel wrote:
Julius wrote:
With one file however (GOODTIME.AVI from the win95 cd) I get this error after about a second: err:heap:HEAP_ValidateInUseArena Heap 0x110000: in-use arena 0x184420 next block has PREV_FREE flag non enough memory
I have no idea where this comes from and why it happens. (It appears to be unrelated to the memcpy call in avifile.c around line 1114.) With +heap I also get this before the error: HIGHPERF/GOODTIME.AVI: heap.c:403: HEAP_GetPtr: Controletest '0' faalt. (the assert fails)
Sounds like heap corruption. You might want to cut down the file to the shortest one that causes the crash, then go after it (possibly using valgrind or the like) to look for the error.
With valgrind I was able to find the problem actually happens when AVIFILE_ReadBlock is called and a new block is about to be read. There doesn't seem to be anything special about this however, as for the previous blocks (and different files) it works just fine.
You could insert HeapValidate(GetProcessHeap(),0,0);FIXME("at place x\n"); at multiple interesting places in your code and +heap will then trigger on when the corruption happens.
Ciao, Marcus
Marcus Meissner wrote:
On Mon, Nov 16, 2009 at 10:52:04AM +0100, Julius Schwartzenberg wrote:
Dan Kegel wrote:
Julius wrote:
With one file however (GOODTIME.AVI from the win95 cd) I get this error after about a second: err:heap:HEAP_ValidateInUseArena Heap 0x110000: in-use arena 0x184420 next block has PREV_FREE flag non enough memory
I have no idea where this comes from and why it happens. (It appears to be unrelated to the memcpy call in avifile.c around line 1114.) With +heap I also get this before the error: HIGHPERF/GOODTIME.AVI: heap.c:403: HEAP_GetPtr: Controletest '0' faalt. (the assert fails)
Sounds like heap corruption. You might want to cut down the file to the shortest one that causes the crash, then go after it (possibly using valgrind or the like) to look for the error.
With valgrind I was able to find the problem actually happens when AVIFILE_ReadBlock is called and a new block is about to be read. There doesn't seem to be anything special about this however, as for the previous blocks (and different files) it works just fine.
You could insert HeapValidate(GetProcessHeap(),0,0);FIXME("at place x\n"); at multiple interesting places in your code and +heap will then trigger on when the corruption happens.
Thanks! I was able to find the problem. Indeed something going wrong with the size. It appears I need to add another hack and come up with some extremely good test cases......
Regards, Julius