[kaffe] Freeing jit temp data on demand (Was: Re: JavaLayer 0.3.0
works)
Dalibor Topic
robilad@kaffe.org
Wed Sep 17 13:01:02 2003
Hi Tim,
thanks for the quick patch! I tried it, but unfortunately, now kaffe
crashes when I try to play a mp3.
bash-2.05a$ kaffe -cp jl030.jar javazoom.jl.player.jlp /var/tmp/GutenRMX.mp3
playing /var/tmp/GutenRMX.mp3...
kaffe-bin: ../../../../kaffe/kaffe/kaffevm/jit3/machine.c:221:
translate: Assertion `reinvoke == false' failed.
Aborted
here's the backtrace from gdb:
bash-2.05a$ KAFFE_DEBUG=gdb kaffe -cp jl030.jar javazoom.jl.player.jlp
/var/tmp/GutenRMX.mp3
[snip]
(gdb) run
Starting program: /tmp/topic/current/jre/bin/kaffe-bin -cp jl030.jar
javazoom.jl.player.jlp /var/tmp/GutenRMX.mp3
playing /var/tmp/GutenRMX.mp3...
Program received signal SIGSEGV, Segmentation fault.
getLastEpilogueLabel () at ../../../../kaffe/kaffe/kaffevm/jit3/labels.c:87
87 if ((l->type & Ltomask) == Lepilogue) {
(gdb) bt
#0 getLastEpilogueLabel () at
../../../../kaffe/kaffe/kaffevm/jit3/labels.c:87
#1 0x40074102 in epilogue_xxx (s=0x83fc74c) at
../../../../kaffe/config/i386/jit3-i386.def:446
#2 0x4009100f in generateInsnSequence (einfo=0xbfffe10c) at
../../../../kaffe/kaffe/kaffevm/jit3/machine.c:780
#3 0x40090a15 in finishInsnSequence (dummy=0x0, code=0xbfffe08c,
einfo=0xbfffe10c) at ../../../../kaffe/kaffe/kaffevm/jit3/machine.c:473
#4 0x400907f7 in translate (xmeth=0x83ce990, einfo=0xbfffe10c) at
../../../../kaffe/kaffe/kaffevm/jit3/machine.c:367
#5 0x4004f719 in soft_fixup_trampoline (_data=0x83d41d9) at
../../../kaffe/kaffe/kaffevm/soft.c:624
#6 0x4009186a in i386_do_fixup_trampoline () at
../../../../kaffe/kaffe/kaffevm/jit3/machine.c:1246
#7 0x40053632 in callMethodA (meth=0x83ce990, func=0x83d41d4, obj=0x0,
args=0x0, ret=0xbfffe16c, promoted=0) at
../../../kaffe/config/i386/common.h:38
#8 0x40044daf in Kaffe_CallStaticVoidMethodA (env=0x8122018,
cls=0x83b921c, meth=0x83ce990, args=0x0) at
../../../kaffe/kaffe/kaffevm/jni.c:2445
#9 0x40025e53 in processClass (class=0x83b921c, tostate=13,
einfo=0xbfffe59c) at ../../../kaffe/kaffe/kaffevm/classMethod.c:578
#10 0x4004eb2d in soft_new (c=0x83b921c) at
../../../kaffe/kaffe/kaffevm/soft.c:50
#11 0x083d3a8b in ?? ()
#12 0x083ca0ea in ?? ()
#13 0x082e82ee in ?? ()
#14 0x082e446f in ?? ()
#15 0x40053ae2 in callMethodV (meth=0x8280010, func=0x818cfb4, obj=0x0,
args=0xbfffeb44, ret=0xbfffe9a8) at ../../../kaffe/config/i386/common.h:38
#16 0x40044bd6 in Kaffe_CallStaticVoidMethodV (env=0x8122018,
cls=0x827099c, meth=0x8280010, args=0xbfffeb40) at
../../../kaffe/kaffe/kaffevm/jni.c:2415
#17 0x40044c87 in Kaffe_CallStaticVoidMethod (env=0x8122018,
cls=0x827099c, meth=0x8280010) at ../../../kaffe/kaffe/kaffevm/jni.c:2428
#18 0x0804908d in main2 (env=0x8122018, argv=0xbffff204, farg=4, argc=1)
at ../../../kaffe/kaffe/kaffe/main.c:325
#19 0x08048e1b in main (argc=2, argv=0xbffff204) at
../../../kaffe/kaffe/kaffe/main.c:192
(gdb) p l
$1 = (label *) 0x0
it looks like it uses an uninitialized label.
To reproduce the crash you'll need javalayer 0.3.0 from
http://prdownloads.sourceforge.net/javalayer/javalayer0.3.tar.gz?download
and some mp3 file, I used http://helden.warenform.de/swf/GutenRMX.mp3 .
cheers,
dalibor topic
Timothy Stack wrote:
>>Timothy Stack wrote:
>>
>>>>Hi,
>>>
>>>>The memory usage seems to come from
>>>>
>>>>jit-temp-data: Nr 179 Mem 8980K, which doesn't get freed as it
>>>>should be, so it's impossible to run with less then -mx 16M. I think the
>>>>gc should try to free jit temp data when it runs out of memory. Tim,
>>>>Helmer, what do you think?
>>>
>>>
>>>The GC doesn't track this, its kept around in a pool which isn't freed if
>>>it passes some threshold.
>>
>>So it would require either a change to the gc to track it (which I
>>though it did, since the (re/de)allocations already happen through the
>>gc interface) or a change in the jitter (jit3) to free temp data when
>>it's not needed any more (after jitting a method? after a certain period
>>of time?), right?
>
>
> I've changed it to free most of the pool after the jit has completed, can
> you cvs update and give it a go?
>
>
>>cheers,
>>dalibor topic
>
>
> thanks,
>
> tim