Newsgroups: comp.sys.transputer
From: ifunltd@xs1.xs4all.nl (ifunltd)
Subject: Re: iserver problem
Organization: XS4ALL, networking for the masses
Date: 31 Aug 1994 21:58:05 GMT
Message-ID: <342udd$frv@news.xs4all.nl>

Martin Bondy (bondy@ERA.COM) wrote:


: Has anyone seen the following problems show up when running the iserver :

: Error - iserver - protocol error:  : module [lops.c], function [LOPS_GetRequest]
:  -> got [2] bytes for header


: Error - iserver - Failed to send response because:
:     : module [lops.c], function [LOPS_SendReply]
:  -> writelink failed = [318632]

Usually this type of error in iserver occurs when the process handling the
link I/O on the transputer side has been shot through the head: when you
have multiple processes sharing the host link and one was doing I/O while
another one was still waiting for reply from the host, or something similar.

If you have multiple processes 'sharing' the host link, then DO NOT FORGET
to use semaphores in the proper way. Inmos uses horrible examples in their
documentation showing you how to get in trouble, since they seem to show
that the host can be shared from multiple processes. THIS IS NOT THE CASE.
So either have one single I/O handler process, or use semaphores.

If this cannot be the problem you are having, then one further possible
cause for shooting the link handling process is some process making a
terrible mistake in (soft) channel communication. If you communicate on
something which is not a channel ,the transputer has 'no problem' with it:
it communicates and reschedules a process which never existed: some piece
of memory which the alledged channelpointer seemed to point at is started
as a process. The next thing you know is the transputer has gone bezerk...

There are no simple rules to check on all this, except: make a full graph
of your communication network, especially inside the first transputer,
and spend a considerable amount of time checking and double-checking
everything.

Good luck

JANG -> IF (UnLtd)

