Re: Working on avifil32, sudden non enough memory error

2009-11-17 Thread Julius Schwartzenberg

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 0x11: 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




Re: Working on avifil32, sudden non enough memory error

2009-11-16 Thread Julius Schwartzenberg

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 0x11: 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




Re: Working on avifil32, sudden non enough memory error

2009-11-16 Thread Marcus Meissner
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 0x11: 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




re: Working on avifil32, sudden non enough memory error

2009-11-15 Thread Dan Kegel
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 0x11: 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?