On 19.2.2013. 10:30, Prof A Olowofoyeku (The African Chief) wrote:
On 18 Feb 2013 at 22:18, Thomas Schneider wrote:
Garth:
Just to clarify the differences a bit.
Thanks for the explanation. I knew about val/var but wasn't so clear about the heap/stack allocation. I didn't know that global varibles go on the heap but did know that calling a procedure caused allocation of locals to the stack.
So I was making a huge allocation on the stack. That's fixed now by using a global. I'm somewhat unclear why the compiler crashed though. I would have thought that if it ran out of stack it would give a warning. But the odd thing is that when the program is being compiled it's not even using the stack yet of course ...
The compiler crash is a different issue from the program crash. There compiler should not crash - in other words, it is a bug. Unfortunately, it is a bug that seems unreproduceable elsewhere, and I am not sure where that leaves us ...
The situation isn't hopeless, as - if having enough time - bug reporter (Prof. Schneider) can scale down to the minimal code that still triggers compiler bug or crash. If I remember well, this is what Frank and I have been doing when bug with SET implementation was triggered only on - then rare and now obsoleted - 64-bit Digital Unix on DEC alpha.
They key is to minimize example code that triggers bug, and then it is possible to generate test case to prevent bug to reappear. Correct implementation of compiler should of course produce correct code on all platforms.
Regards, Mirsad