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

Bernie Solomon kaffe@kaffe.org
Wed, 09 Apr 1997 18:06:29 +0000


Gregor Hoffleit wrote:
> 
> Hmm, as I wrote lately, there were severe threading problems introduced with 0.8.3 for Nextstep. All but the simplest programs loop endlessly in checkEvents(). Happens for all tested Nextstep architectures, therefore it's not dependent on the arch specific threading code.
> 
> I tried to track down the problem, but could not see any significant changes to kaffevm/thread.c since 0.8.2. The symptom is that checkEvent's select call never returns here. This happens e.g. with test/threads/T16. Nevertheless it works for some other examples, e.g. threads/T3.
> 
> I have no idea what I should look for.

I have reproduced this myself. I have also discovered that putting back
setting the thread state to DEAD in killThread:

		if (TCTX(currentThread)->status == THREAD_RUNNING) {
			for (ntid = &threadQhead[TCTX(currentThread)->priority]; *ntid != 0;
ntid = &(*ntid)->next) {
				if (*ntid == currentThread) {
					*ntid = currentThread->next;
					break;
				}
			}
		}

>>>>>>		TCTX(currentThread)->status = THREAD_DEAD;
		talive--;
		if (currentThread->daemon) {
			tdaemon--;
		}

means that it works again in 0.8.3. The question to which I don't know
the answer is why it was removed?
-- 
Bernie Solomon (bernard@edsug.com or Bernard.Solomon@acm.org)
Unigraphics Architecture, EDS-Unigraphics, Cambridge, UK