[PATCH] Workaround some MSan bootstrap issues.
Evgeniy Stepanov
eugenis at google.com
Thu Feb 14 01:11:53 PST 2013
Weird. I removed this stack allocation code, and still no leak report from Valgrind.
OK to land this (in 2 commits)?
Hi kcc, chapuni,
http://llvm-reviews.chandlerc.com/D402
CHANGE SINCE LAST DIFF
http://llvm-reviews.chandlerc.com/D402?vs=967&id=977#toc
Files:
unittests/Support/ManagedStatic.cpp
lib/Support/Unix/Process.inc
Index: unittests/Support/ManagedStatic.cpp
===================================================================
--- unittests/Support/ManagedStatic.cpp
+++ unittests/Support/ManagedStatic.cpp
@@ -26,34 +26,16 @@
*ms;
return NULL;
}
-
- // Valgrind's leak checker complains glibc's stack allocation.
- // To appease valgrind, we provide our own stack for each thread.
- void *allocate_stack(pthread_attr_t &a, size_t n = 65536) {
- void *stack = malloc(n);
- pthread_attr_init(&a);
-#if defined(__linux__)
- pthread_attr_setstack(&a, stack, n);
-#endif
- return stack;
- }
}
TEST(Initialize, MultipleThreads) {
// Run this test under tsan: http://code.google.com/p/data-race-test/
-
- pthread_attr_t a1, a2;
- void *p1 = test1::allocate_stack(a1);
- void *p2 = test1::allocate_stack(a2);
-
llvm_start_multithreaded();
pthread_t t1, t2;
- pthread_create(&t1, &a1, test1::helper, NULL);
- pthread_create(&t2, &a2, test1::helper, NULL);
+ pthread_create(&t1, NULL, test1::helper, NULL);
+ pthread_create(&t2, NULL, test1::helper, NULL);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
- free(p1);
- free(p2);
llvm_stop_multithreaded();
}
#endif
Index: lib/Support/Unix/Process.inc
===================================================================
--- lib/Support/Unix/Process.inc
+++ lib/Support/Unix/Process.inc
@@ -224,6 +224,8 @@
#if defined(HAVE_SYS_IOCTL_H) && defined(HAVE_TERMIOS_H)
// Try to determine the width of the terminal.
struct winsize ws;
+ // Zero-fill ws to avoid a false positive from MemorySanitizer.
+ memset(&ws, 0, sizeof(ws));
if (ioctl(FileID, TIOCGWINSZ, &ws) == 0)
Columns = ws.ws_col;
#endif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D402.2.patch
Type: text/x-patch
Size: 1699 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130214/43c5a3c5/attachment.bin>
More information about the llvm-commits
mailing list