COS99284@UFRJ.BITNET (Luiz Felipe Perrone) (06/07/91)
In response to Jan Vorbr"uegen message: I just read your message on the transputer list and I can say you were not as much sarcastic as the subject entitles you to be. I have been using the TDS2 occam compiler for almost two years now and have encountered many of its incongruities. I have faced many times the same problem you report and disregarding whatever Inmos wonderful manuals say, what may be happenning is that you have a very big program text in memory. If your whole program is in one single filed fold that may be a real nuisance. The compiler cannot find free memory when its working through you your code because most has been ocupied by the source code in the text editor. If you fold and file big chunks of your source this might help you. Take care not to let these filed folds get too big otherwise you are bound to have the same problem again. Among all problems, bugs (there are real bugs in there) and weird things related to this compiler, the worst of all - that I have found up to date - is the surreal way it reports one kind of compile error. On one occasion, I was trying to compile a retyping statement and after a few unsuccessful attempts (the compiler was then kind enough to detect and point out my mistakes) it finally went through. When I ran the EXE it stopped with the traditional "Transputer Error Flag Set" message and analysing the core dump, I found the debugger pointing to the line where I made the retyping. To my surprise, when I went to the monitor screen and disassembled the last instruction executed, I found a SETERR (the occam STOP). Going back to the manual and looking for the formal definition of the RETYPES facility, I found out what was wrong with my code: I had done something illegal that had not been detected by the compiler at compile time but in some strange way of reporting my mistake it inserted a SETERR instruction in the executable code, probably where I first accessed the retyped data. If you're asking yourself what was that error here it goes... The manual says: definition = specifier name RETYPES element: : VAL specifier name RETYPES expression: I used the first clause in this definition but put an expression instead of the required element. And so it happened... Good luck to you with your future ventures in these barren lands of the occam field ! ------------------------------------------------------------------------ Luiz Felipe Perrone MSc student - COPPE - Dept. of Systems Engineering and Computer Science Universidade Federal do Rio de Janeiro - Brazil E-mail: COS99284@UFRJ (BITNET) ------------------------------------------------------------------------