kaffe 0.8.3: Bug in kaffe/kaffevm/classMethod.c

Frank Mehnert Frank.Mehnert at mchp.siemens.de
Fri Apr 4 04:37:31 PST 1997


big sorry for my previos mail of this subject, please ignore it. There is
an error in fact on that place but I don't know how to solve it:

The meaning of the lines

489     if (class->state == CSTATE_DOING_LINK) {
490         while (class->state == CSTATE_DOING_LINK) {
491              suspendThread(currentThread);
492          }
493          return;
494     }
495     /* Signal that we are linking */
496     class->state = CSTATE_DOING_LINK;

is: If another thread is linking the class 'class' then the current
thread should yield itself to another thread. But the function yield
lets preempt the current thread only if another thread(s) exist(s) with
the same priority as the current thread (see kaffe/kaffevm/thread.c).

So what we need is a function call which yields the current thread as
unconditional (otherwise we get an endless loop).


Frank Mehnert
email: Frank.Mehnert at mchp.siemens.de

More information about the kaffe mailing list