GC_stackbottom could be used only in the single-threaded case.
* os_dep.c [SAVE_CALL_CHAIN && (NARGS!=0 || NFRAMES%2!=0
|| !GC_HAVE_BUILTIN_BACKTRACE) && THREADS] (GC_save_callers): Do not
compare fp to GC_stackbottom.
* os_dep.c [SAVE_CALL_CHAIN && (NARGS!=0 || NFRAMES%2!=0
|| !GC_HAVE_BUILTIN_BACKTRACE) && THREADS && STACK_GROWS_UP]
(GC_save_callers): Break the loop if fp is NULL.
#endif
for (; !((word)fp HOTTER_THAN (word)frame)
- && !((word)GC_stackbottom HOTTER_THAN (word)fp)
+# ifndef THREADS
+ && !((word)GC_stackbottom HOTTER_THAN (word)fp)
+# elif defined(STACK_GROWS_UP)
+ && fp != NULL
+# endif
&& nframes < NFRAMES;
fp = (struct frame *)((long) fp -> FR_SAVFP + BIAS), nframes++) {
# if NARGS > 0