Index: coregrind/m_sigframe/sigframe-x86-linux.c
===================================================================
--- coregrind/m_sigframe/sigframe-x86-linux.c	(revision 13380)
+++ coregrind/m_sigframe/sigframe-x86-linux.c	(working copy)
@@ -401,9 +401,11 @@
 {
    ThreadId        tid = tst->tid;
    NSegment const* stackseg = NULL;
+   int a = 0;
 
    if (VG_(extend_stack)(addr, tst->client_stack_szB)) {
       stackseg = VG_(am_find_nsegment)(addr);
+      a = 1;
       if (0 && stackseg)
 	 VG_(printf)("frame=%#lx seg=%#lx-%#lx\n",
 		     addr, stackseg->start, stackseg->end);
@@ -415,7 +417,7 @@
          "Can't extend stack to %#lx during signal delivery for thread %d:\n",
          addr, tid);
       if (stackseg == NULL)
-         VG_(message)(Vg_UserMsg, "  no stack segment\n");
+         VG_(message)(Vg_UserMsg, "  no stack segment: %d\n", a);
       else
          VG_(message)(Vg_UserMsg, "  too small or bad protection modes\n");
 
Index: coregrind/m_signals.c
===================================================================
--- coregrind/m_signals.c	(revision 13380)
+++ coregrind/m_signals.c	(working copy)
@@ -2216,8 +2216,12 @@
       = seg ? VG_(am_next_nsegment)( seg, True/*fwds*/ )
             : NULL;
 
+   VG_(debugLog)(1, "signals", 
+	"addr=%lu, seg=%p, seg_next=%p\n", addr, seg, seg_next);
    if (seg && seg->kind == SkAnonC)
       /* addr is already mapped.  Nothing to do. */
+      /*VG_(debugLog)(1, "signals", */
+		/*"already mapped\n");*/
       return True;
 
    /* Check that the requested new base is in a shrink-down
@@ -2228,8 +2232,13 @@
            && seg->smode == SmUpper
            && seg_next
            && seg_next->kind == SkAnonC
-           && seg->end+1 == seg_next->start))
+           && seg->end+1 == seg_next->start)) {
+      VG_(message)(Vg_UserMsg, "seg: kind=%d, ref=%d, smode=%d, ref=%d\n", 
+		      seg->kind, SkResvn, seg->smode, SmUpper);
+      VG_(message)(Vg_UserMsg, "seg_next: kind=%d, ref=%d, seg_end=%lu, ref=%lu\n", 
+		      seg_next->kind, SkAnonC, seg->end+1, seg_next->start);
       return False;
+   }
 
    udelta = VG_PGROUNDUP(seg_next->start - addr);
    VG_(debugLog)(1, "signals", 
@@ -2241,6 +2250,7 @@
       return False;
    }
 
+   /*VG_(message)(Vg_UserMsg, "going change stack\n");*/
    /* When we change the main stack, we have to let the stack handling
       code know about it. */
    VG_(change_stack)(VG_(clstk_id), addr, VG_(clstk_end));
