Re: [PATCH] fix PR48299 by merging changes for thread_leak_test.c from upstream

2012-02-28 Thread Richard Guenther
On Mon, 27 Feb 2012, Mike Stump wrote:

 On Feb 27, 2012, at 1:01 PM, Jack Howarth wrote:
Since this is just a testsuite issue in boehm-gc, wouldn't this be Hans' 
  call? I would definitely
  like to get this fixed in gcc 4.7 so that the boehm-gc testsuite doesn't 
  suffer timeouts. Also note
  that gcc 4.7 is the first release which seems to report boehm-gc 
  testresults.
 
 If you check the changelogs, the java people usually do the pulling.  Since 
 they have a history doing it, they are the best to know about any problems 
 associated with imports.  If they abdicate, I'll approve it, though, late 
 timing might push it past the .0 release.

As it is a testsuite-only change and removes a testsuite regression
(fingers crossing) the patch is ok.  It cannot really make things worse
here.

Thanks,
Richard.


[PATCH] fix PR48299 by merging changes for thread_leak_test.c from upstream

2012-02-27 Thread Jack Howarth
   Currently the testsuite/boehm-gc.c/thread_leak_test.c executation test
will hang on several targets including x86_64-apple-darwin10/11 for -m32/-m64.
The attached patch eliminates this issue, PR48299, by merging in the
upstream changes for this testcase from...

https://raw.github.com/ivmai/bdwgc/master/tests/thread_leak_test.c

The only changes made to the upstram test case was retaining the use of...

GC_find_leak = 1;

rather than...

GC_set_find_leak(1);

and formatting style changes. Tested on x86_64-apple-darwin10 and
x86_64-apple-darwin11. Okay for gcc trunk for gcc 4.7 (as the
timeouts in the testsuite are very annoying)?
 Jack
ps I was uncertain how much detail we need in the changelog as the
upstream commit logs aren't very informative...

https://github.com/ivmai/bdwgc/commits/master/tests/thread_leak_test.c

2012-02-27  Jack Howarth  howa...@bromo.med.uc.edu
Patrick Marlier  patrick.marl...@gmail.com

PR boehm-gc/48299
testsuite/boehm-gc.c/thread_leak_test.c: Merge upstream changes.

boehm-gc/

Index: testsuite/boehm-gc.c/thread_leak_test.c
===
--- testsuite/boehm-gc.c/thread_leak_test.c (revision 184602)
+++ testsuite/boehm-gc.c/thread_leak_test.c (working copy)
@@ -1,13 +1,22 @@
-#define GC_LINUX_THREADS
+#ifndef GC_THREADS
+# define GC_THREADS
+#endif
 #include leak_detector.h
-#include pthread.h
+#ifdef GC_PTHREADS
+# include pthread.h
+#else
+# include windows.h
+#endif
 #include stdio.h
 
-void * test(void * arg) {
+#ifdef GC_PTHREADS
+  void * test(void * arg)
+#else
+  DWORD WINAPI test(LPVOID arg)
+#endif
+{
 int *p[10];
 int i;
-GC_find_leak = 1; /* for new collect versions not compiled  */
-/* with -DFIND_LEAK.*/
 for (i = 0; i  10; ++i) {
 p[i] = malloc(sizeof(int)+i);
 }
@@ -15,23 +24,47 @@
 for (i = 1; i  10; ++i) {
 free(p[i]);
 }
-}   
+#ifdef GC_PTHREADS
+return arg;
+#else
+return (DWORD)(GC_word)arg;
+#endif
+}
 
 #define NTHREADS 5
 
-int main() {
+int main(void) {
 int i;
+#ifdef GC_PTHREADS
 pthread_t t[NTHREADS];
+#else
+HANDLE t[NTHREADS];
+DWORD thread_id;
+#endif
 int code;
 
+GC_find_leak = 1;/* for new collect versions not compiled   */
+GC_INIT();
 for (i = 0; i  NTHREADS; ++i) {
-   if ((code = pthread_create(t + i, 0, test, 0)) != 0) {
-   printf(Thread creation failed %d\n, code);
+#ifdef GC_PTHREADS
+   code = pthread_create(t + i, 0, test, 0);
+#else
+   t[i] = CreateThread(NULL, 0, test, 0, 0, thread_id);
+   code = t[i] != NULL ? 0 : (int)GetLastError();
+#endif
+   if (code != 0) {
+  printf(Thread creation failed %d\n, code);
 }
 }
 for (i = 0; i  NTHREADS; ++i) {
-   if ((code = pthread_join(t[i], 0)) != 0) {
-printf(Thread join failed %lu\n, code);
+#ifdef GC_PTHREADS
+   code = pthread_join(t[i], 0);
+#else
+   code = WaitForSingleObject(t[i], INFINITE) == WAIT_OBJECT_0 ? 0 :
+(int)GetLastError();
+#endif
+   if (code != 0) {
+  printf(Thread join failed %d\n, code);
 }
 }
 CHECK_LEAKS();


Re: [PATCH] fix PR48299 by merging changes for thread_leak_test.c from upstream

2012-02-27 Thread Mike Stump
On Feb 27, 2012, at 8:41 AM, Jack Howarth wrote:
 Currently the testsuite/boehm-gc.c/thread_leak_test.c executation test
 will hang on several targets including x86_64-apple-darwin10/11 for -m32/-m64.
 The attached patch eliminates this issue, PR48299, by merging in the
 upstream changes for this testcase from...

 Index: testsuite/boehm-gc.c/thread_leak_test.c

So, ideally, I'd like to have Bryce or Tom review this change or at least the 
methodology, if they are still working in this area.


Re: [PATCH] fix PR48299 by merging changes for thread_leak_test.c from upstream

2012-02-27 Thread Jack Howarth
On Mon, Feb 27, 2012 at 10:07:20AM -0800, Mike Stump wrote:
 On Feb 27, 2012, at 8:41 AM, Jack Howarth wrote:
  Currently the testsuite/boehm-gc.c/thread_leak_test.c executation test
  will hang on several targets including x86_64-apple-darwin10/11 for 
  -m32/-m64.
  The attached patch eliminates this issue, PR48299, by merging in the
  upstream changes for this testcase from...
 
  Index: testsuite/boehm-gc.c/thread_leak_test.c
 
 So, ideally, I'd like to have Bryce or Tom review this change or at least the 
 methodology, if they are still working in this area.

Mike,
   Since this is just a testsuite issue in boehm-gc, wouldn't this be Hans' 
call? I would definitely
like to get this fixed in gcc 4.7 so that the boehm-gc testsuite doesn't suffer 
timeouts. Also note
that gcc 4.7 is the first release which seems to report boehm-gc testresults.

http://gcc.gnu.org/ml/gcc-testresults/2012-02/msg02427.html

vs

http://gcc.gnu.org/ml/gcc-testresults/2012-02/msg01854.html

  Jack


Re: [PATCH] fix PR48299 by merging changes for thread_leak_test.c from upstream

2012-02-27 Thread Mike Stump
On Feb 27, 2012, at 1:01 PM, Jack Howarth wrote:
   Since this is just a testsuite issue in boehm-gc, wouldn't this be Hans' 
 call? I would definitely
 like to get this fixed in gcc 4.7 so that the boehm-gc testsuite doesn't 
 suffer timeouts. Also note
 that gcc 4.7 is the first release which seems to report boehm-gc testresults.

If you check the changelogs, the java people usually do the pulling.  Since 
they have a history doing it, they are the best to know about any problems 
associated with imports.  If they abdicate, I'll approve it, though, late 
timing might push it past the .0 release.