#!/bin/sh /usr/share/dpatch/dpatch-run @DPATCH@ diff -Naur pth-2.0.7.orig/pth_sched.c pth-2.0.7/pth_sched.c --- pth-2.0.7.orig/pth_sched.c 2006-06-08 17:54:03.000000000 +0000 +++ pth-2.0.7/pth_sched.c 2006-06-25 09:07:25.000000000 +0000 @@ -297,8 +297,15 @@ /* * Check for stack overflow */ +#ifndef __ia64__ if (pth_current->stackguard != NULL) { if (*pth_current->stackguard != 0xDEAD) { +#else + /* On ia64 the stack grows down but the bottom part is used for register + * backing store which grows up. So we check for a meet in the middle + */ + if (pth_current->mctx.uc.uc_mcontext.sc_gr[12] <= pth_current->mctx.uc.uc_mcontext.sc_ar_bsp) { +#endif pth_debug3("pth_scheduler: stack overflow detected for thread 0x%lx (\"%s\")", (unsigned long)pth_current, pth_current->name); /* @@ -324,7 +331,9 @@ pth_current->state = PTH_STATE_DEAD; kill(getpid(), SIGSEGV); } +#ifndef __ia64__ } +#endif /* * If previous thread is now marked as dead, kick it out