Re: [Gc] cordtest, gctest FAIL on OSX

Ivan Maidanski <ivmai-JGs/[email protected]> Wed, 07 Jan 2015 22:42:52 +0300
Newsgroups gmane.comp.programming.garbage-collection.boehmgc,gmane.spam.detected
Message-ID <[email protected]>
Hi Bruce,
Thank you. I merged them both to master.
--
Sunday, 04 Jan 2015, 17:39 +03:00 from Bruce Hoult <[email protected]>:
There are actually two problems here.
The first is in:
7bef74b Fix unresolved vsnprintf in misc.c and snprintf in cordtest (DJGPP, VC)
OS X for some reason has problems with defining snprintf as a macro and including another macro expansion in its arguments. Others have found this in the past e.g. 
http://sourceforge.net/p/powerwatershed/discussion/1024808/thread/79db23d3/
The following patch fixes this (and hopefully doesn't break the others):
--------------------------
diff --git a/cord/tests/cordtest.c b/cord/tests/cordtest.c
index a5a0c30..3edd0b4 100644
--- a/cord/tests/cordtest.c
+++ b/cord/tests/cordtest.c
@@ -206,9 +206,9 @@ void test_extras(void)
 
 #ifdef __DJGPP__
   /* snprintf is missing in DJGPP (v2.0.3) */
-# define GC_SNPRINTF sprintf
-# define GC_SNPRINTF_BUFSZ_ARG(bufsz) /* empty */
+# define HAVE_SNPRINTF 0
 #else
+# define HAVE_SNPRINTF 1
 # if defined(_MSC_VER)
 #   if defined(_WIN32_WCE)
       /* _snprintf is deprecated in WinCE */
@@ -219,7 +219,6 @@ void test_extras(void)
 # else
 #   define GC_SNPRINTF snprintf
 # endif
-# define GC_SNPRINTF_BUFSZ_ARG(bufsz) (bufsz),
 #endif
 
 void test_printf(void)
@@ -244,8 +243,12 @@ void test_printf(void)
     x = CORD_cat(x,x);
     if (CORD_sprintf(&result, "->%-120.78r!\n", x) != 124)
         ABORT("CORD_sprintf failed 3");
-    (void)GC_SNPRINTF(result2, GC_SNPRINTF_BUFSZ_ARG(sizeof(result2))
-                      "->%-120.78s!\n", CORD_to_char_star(x));
+#   if HAVE_SNPRINTF
+        (void)GC_SNPRINTF(result2, sizeof(result2), "->%-120.78s!\n",
+                          CORD_to_char_star(x));
+#   else
+        (void)sprintf(result2, "->%-120.78s!\n", CORD_to_char_star(x));
+#   endif
     result2[sizeof(result2) - 1] = '\0';
     if (CORD_cmp(result, result2) != 0)ABORT("CORD_sprintf goofed 5");
 }
--------------------------
The next problem is in:
0d147af Fix missing error handling of pthread_attr_init/getstacksize
Error 22 is EINVAL.  Man pthread_attr_setstacksize gives the following possible reasons for EINVAL: 
     [EINVAL]           Invalid value for attr.
     [EINVAL]           stacksize is less than PTHREAD_STACK_MIN.
     [EINVAL]           stacksize is not a multiple of the system page size.
The following patch fixes the problem, demonstrating that the issue is "stacksize is not a multiple of the system page size."
--------------------------
diff --git a/tests/test.c b/tests/test.c
index 1f006e4..13ab9a9 100644
--- a/tests/test.c
+++ b/tests/test.c
@@ -1881,7 +1881,7 @@ int main(void)
 #   if defined(GC_IRIX_THREADS) || defined(GC_FREEBSD_THREADS) \
         || defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS) \
         || defined(GC_OPENBSD_THREADS)
-        if ((code = pthread_attr_setstacksize(&attr, 1000000)) != 0) {
+        if ((code = pthread_attr_setstacksize(&attr, 1000*1024)) != 0) {
           GC_printf("pthread_attr_setstacksize failed, error=%d\n", code);
           FAIL;
         }
--------------------------
With these two changes, all tests pass on OS X with current git HEAD (0322b83).
Note that both problems are in the test code, not in the GC.
On Tue, Dec 30, 2014 at 10:58 AM, John Leung  < [email protected] > wrote:
>cordtest, gctest FAIL on OSX in make check
>
>sys info:
>OSX 10.9.2
>Xcode 4.5.2
>Please let me know what other information I need to provide.
>thank you.
>
>
>> make check
>...
>/Applications/Xcode.app/Contents/Developer/usr/bin/make  check-TESTS
>./test-driver: line 107: 11117 Abort trap: 6           "$@" > $log_file 2>&1
>FAIL: cordtest
>./test-driver: line 107: 11137 Abort trap: 6           "$@" > $log_file 2>&1
>FAIL: gctest
>PASS: leaktest
>PASS: middletest
>PASS: smashtest
>PASS: hugetest
>PASS: realloc_test
>PASS: staticrootstest
>PASS: threadleaktest
>PASS: threadkey_test
>PASS: subthreadcreate_test
>PASS: initsecondarythread_test
>PASS: disclaim_test
>PASS: disclaim_bench
>make[5]: Nothing to be done for `all-am'.
>============================================================================
>Testsuite summary for gc 7.5.0
>============================================================================
># TOTAL: 14
># PASS:  12
># SKIP:  0
># XFAIL: 0
># FAIL:  2
># XPASS: 0
># ERROR: 0
>============================================================================
>See ./test-suite.log
>Please report to  [email protected]
>============================================================================
>make[3]: *** [test-suite.log] Error 1
>make[2]: *** [check-TESTS] Error 2
>make[1]: *** [check-am] Error 2
>make: *** [check-recursive] Error 1
>
>
>
>
>> cat ./test-suite.log
>================================
>   gc 7.5.0: ./test-suite.log
>================================
>
># TOTAL: 14
># PASS:  12
># SKIP:  0
># XFAIL: 0
># FAIL:  2
># XPASS: 0
># ERROR: 0
>
>.. contents:: :depth: 2
>
>FAIL: cordtest
>==============
>
>
>FAIL: gctest
>============
>
>pthread_attr_setstacksize failed, error=22
>Test failed
>
>
>--
>This message has been scanned for viruses and
>dangerous content by MailScanner , and is
>believed to be clean.
>_______________________________________________
>bdwgc mailing list
>[email protected]
>https://lists.opendylan.org/mailman/listinfo/bdwgc
_______________________________________________
bdwgc mailing list
[email protected]
https://lists.opendylan.org/mailman/listinfo/bdwgc

_______________________________________________
bdwgc mailing list
[email protected]
https://lists.opendylan.org/mailman/listinfo/bdwgc