Thomas Schatzl wrote:
From: Ales Katona <[EMAIL PROTECTED]>
What about simply disabling such -Ct compiler switch (with nice error
message) under Windows ? Or maybe it should "do nothing" under
Windows ?
I have no idea how -Ct works. It seems there are also report(by Pavel
to be more precise) that -Ct causes problems with threads in Linux
too(Pavel uses his own thread manager so who knows..).
Unless someone can explain to me how the stack checker knows the
right size of stack it should be a rule to turn it off with threads.
I'm actualy not sure wether -Ct works ok as-is.
Ales
Unfortunately the stack checker doesn't know the right size of the
stack (yet; due to similar problems I am working on that at atm). It
assumes that the stack is of fixed size, stored in the global
"stacklen" (or so) variable.
When stack checking is enabled, the compiler generates some extra code
in the function prolog which checks whether the current stack pointer,
decreased by the amount of stack space this method requires and some
safety margin, is below the bottom of the stack (a value calculated at
program start from the initial stack pointer, and the "stacklen"
contents).
If this is the case, it gives a RTE 202.
Problems with that:
* the __stacklen variable is a predetermined (at compile time) fixed
value
* the safety margin is quite high, e.g. 16k, which immediately RTEs
in threads, because their default stack size is quite low (<= 16k...).
I hope this answers your question.
Regards,
Thomas
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel
Thanks, yes it does and it also is a valid point to turn it off with
threads.
Ales
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel