Hi Clang Developers,

I noticed that using "#pragma clang __debug overflow_stack" on clang.exe built 
by Visual Studio 2012, to force a stack overflow causes it to seemingly hang 
indefinitely (I left it running overnight and it hadn't finished by morning).  
This patch just ensures that there is actually some new stack usage on every 
call to DebugOverflowStack.  With this patch the overflow_stack pragma causes 
clang.exe to crash immediately with a big callstack full of DebugOverflowStack 
as I'd expect.  

I've got a test for it, but when testing on Linux ran into the issue described 
at https://savannah.gnu.org/bugs/?22010 where GNU Make 3.81 has a bug where 
spawned processes get an unlimited stack size.  Obviously this doesn't play 
well with a test designed to overflow the stack and brought the whole system to 
a halt.  It works correctly when running through lit directly.

Here is my test for reference.  Any suggestions to robustify it against the 
above behaviour are appreciated!  I thought about adding a "REQUIRES: 
system-windows" but I'm not sure if some people may be using Make on Windows or 
whether it suffers from the same issue as on Linux.

--------------------------------------------------------------
// RUN: not %clang %s -fsyntax-only 2>&1 | FileCheck %s
// REQUIRES: crash-recovery
    
#pragma clang __debug overflow_stack

// CHECK: PLEASE submit a bug report
--------------------------------------------------------------

Otherwise, is it okay to commit the attached patch without the test?

Many Thanks,

Greg Bedwell
SN Systems - Sony Computer Entertainment Inc.

http://reviews.llvm.org/D5109

Files:
  lib/Lex/Pragma.cpp
Index: lib/Lex/Pragma.cpp
===================================================================
--- lib/Lex/Pragma.cpp
+++ lib/Lex/Pragma.cpp
@@ -926,6 +926,7 @@
     #pragma warning(disable : 4717)
 #endif
   static void DebugOverflowStack() {
+    void* StackUser = &StackUser;
     void (*volatile Self)() = DebugOverflowStack;
     Self();
   }
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to