Can/How I disable threading?

Patrick Tullmann kaffe@rufus.w3.org
Wed, 20 Jun 2001 14:24:30 -0600


Min Xu wrote:
> This one seems promising! 
> So where can I find the code to separate the JVM from the thread?
> E.g. Bypassing the thread creation in the JVM init; avoid invoke
> GC & finalization, etc.

If I understand correctly, the problem is when the JVM performs a
thread switch, right?  All I'm suggesting is that you avoid giving the
the JVM a reason to perform a thread switch.  All the code and call
points are still there, you just hope the thread switch won't be
called.  :)

If you want to hack the C code to actually prevent this, I think the
place to look is in baseClasses.c::initialiseKaffe().  Or you could
emasculate jthread.c:jthread_create().


> The simulator doesn't have any functions to support interupt during
> the simulation, as far as I know. The basic signal handling is not
> supported in the simulator, which means, the simulator can not stop
> the current simulation and jump into the simulatee's signal handling
> code simulate that code and resume the main program simulation after
> that.

I think this just means you can't have preemptive threads, which are
not required by the Java model, even.  I know Kaffe didn't support
preemption for a while.  You can still support context switches during 
at defined points (i.e., when invoking most jthread* functions).


> System.c:384: java_lang_System_initProperties: Assertion `r >= 0'

That's the uname() system call returning an error.  You can probably
fixup the System.c code to gracefully handle the error (e.g., by
setting the os.* properties to "unknown").

This is an arraycopy() error during the loading of the basic
"resources".  I know this problem has come up for others in the past,
but I do not remember what the actual problem was.  Something about
the default resource objects (usually character maps) not being
visible/available.

> Internal error: caught an unexpected exception.
> Please check your CLASSPATH and your installation.
> java/lang/ArrayStoreException
>         at java.lang.System.arraycopy(System.java:native)
>         at java.lang.String.getChars(String.java:293)
>         at java.lang.String.toCharArray(String.java:504)
>         at java.util.StringTokenizer.<init>(StringTokenizer.java:35)
>         at java.util.StringTokenizer.<init>(StringTokenizer.java:30)
>         at
> kaffe.lang.SystemClassLoader.findResources(SystemClassLoader.java:49)
>         at java.lang.ClassLoader.getResources(ClassLoader.java:188)
>         at java.lang.ClassLoader.getResource(ClassLoader.java:165)
>         at
> java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:215)
>         at
> java.lang.ClassLoader.getSystemResourceAsStream(ClassLoader.java:227)
>         at java.lang.System.<clinit>(System.java:49)
>         at java.lang.ThreadGroup.add(ThreadGroup.java:86)

-Pat

----- ----- ---- ---  ---  --   -    -      -         -               -
Pat Tullmann                                       tullmann@cs.utah.edu
 Thisemailhasbeenbroughttoyoubycocacolafavoredbyprogrammerseverywhere