I have to walk away from this bug for a while.  Maybe this
message can give someone else a head start.

It's quite a Heisenbug, disappearing when you put any
malloc in besides vanilla libc; I tried electric fence
and dmalloc, I understand valgrind is the same.

My comments refer to broken2.jp2.  The bug reproduces easily
in an out-of-the-box build of jasper_1.701.0.orig.tar.gz.
I find that much easier to work with than a full Debian build,
with all its shared library gyrations.

tar -xvzf jasper_1.701.0.orig.tar.gz
cd jasper-1.701.0
./configure
make
gdb src/appl/imginfo
run -f /path/to/broken2.jp2
*** glibc detected *** double free or corruption (!prev):
0x000000000054ecb0 ***

Program received signal SIGABRT, Aborted.
0x00002b65b5d5907b in raise () from /lib/libc.so.6

I can trace the main file parsing loop that starts in
src/libjasper/jpc/jpc_dec.c:369.  It makes its way through the
get, check, process, and destroy phases of "marker segments" of
type SOC, SIZ, COM, COD, QCD, and QCC.  It crashes in the destroy
phase of a second QCC marker segment.  Yes, I added a bunch of
printf's.  They don't seem to affect the bug they way a different
malloc library does.

Just in case it's a hint to any jasper experts reading, the
two QCC headers printed by jpc_qcc_dumpparms() are
type = 0xff5d (QCC); len = 20;compno = 1; qntsty = 0; numguard = 2; 
numstepsizes = 16
type = 0xff5d (QCC); len = 2068;compno = 2; qntsty = 0; numguard = 2; 
numstepsizes = 2064

I have to admit that doesn't mean much to me.

     - Larry


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to