[Log4cplus-devel] [ log4cplus-Bugs-3568882 ] Unnamed semaphores are not supported on Mac OS X
Logging Framework for C++
Brought to you by:
wilx
From: SourceForge.net <no...@so...> - 2012-09-19 08:34:46
|
Bugs item #3568882, was opened at 2012-09-18 04:46 Message generated for change (Comment added) made by wilx You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=429073&aid=3568882&group_id=40830 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Appender Group: v1.1.x >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Christian Rüegg (rueegg) Assigned to: Václav Zeman (wilx) Summary: Unnamed semaphores are not supported on Mac OS X Initial Comment: use named semaphores. See: http://stackoverflow.com/questions/1413785/sem-init-on-os-x ---------------------------------------------------------------------- >Comment By: Václav Zeman (wilx) Date: 2012-09-19 01:34 Message: Thank you for the bug report and testing. ---------------------------------------------------------------------- Comment By: Christian Rüegg (rueegg) Date: 2012-09-19 01:08 Message: Compiles fine and seems to run. ;-) Thanks ---------------------------------------------------------------------- Comment By: Václav Zeman (wilx) Date: 2012-09-18 12:54 Message: Thank you. I have attached a diff that fixes both of the problems that you have reported today. I have reimplemented Semaphore using named POSIX semaphores for MacOS X. Please try it and tell me if it works well for you. ---------------------------------------------------------------------- Comment By: Christian Rüegg (rueegg) Date: 2012-09-18 06:29 Message: Named semaphores seem to work in my quick test. Except I had problems on app exit (crash in log thread). But this might be another bug. g++ --version i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) echo | g++ -dD -E - # 1 "<stdin>" # 1 "<built-in>" #define __STDC__ 1 #define __STDC_HOSTED__ 1 #define __GNUC__ 4 #define __GNUC_MINOR__ 2 #define __GNUC_PATCHLEVEL__ 1 #define __APPLE_CC__ 5658 #define __llvm__ 1 #define __SIZE_TYPE__ long unsigned int #define __PTRDIFF_TYPE__ long int #define __WCHAR_TYPE__ int #define __WINT_TYPE__ int #define __INTMAX_TYPE__ long int #define __UINTMAX_TYPE__ long unsigned int #define __GXX_ABI_VERSION 1002 #define __SCHAR_MAX__ 127 #define __SHRT_MAX__ 32767 #define __INT_MAX__ 2147483647 #define __LONG_MAX__ 9223372036854775807L #define __LONG_LONG_MAX__ 9223372036854775807LL #define __WCHAR_MAX__ 2147483647 #define __CHAR_BIT__ 8 #define __INTMAX_MAX__ 9223372036854775807L #define __FLT_EVAL_METHOD__ 0 #define __DEC_EVAL_METHOD__ 2 #define __FLT_RADIX__ 2 #define __FLT_MANT_DIG__ 24 #define __FLT_DIG__ 6 #define __FLT_MIN_EXP__ (-125) #define __FLT_MIN_10_EXP__ (-37) #define __FLT_MAX_EXP__ 128 #define __FLT_MAX_10_EXP__ 38 #define __FLT_MAX__ 3.40282347e+38F #define __FLT_MIN__ 1.17549435e-38F #define __FLT_EPSILON__ 1.19209290e-7F #define __FLT_DENORM_MIN__ 1.40129846e-45F #define __FLT_HAS_DENORM__ 1 #define __FLT_HAS_INFINITY__ 1 #define __FLT_HAS_QUIET_NAN__ 1 #define __DBL_MANT_DIG__ 53 #define __DBL_DIG__ 15 #define __DBL_MIN_EXP__ (-1021) #define __DBL_MIN_10_EXP__ (-307) #define __DBL_MAX_EXP__ 1024 #define __DBL_MAX_10_EXP__ 308 #define __DBL_MAX__ 1.7976931348623157e+308 #define __DBL_MIN__ 2.2250738585072014e-308 #define __DBL_EPSILON__ 2.2204460492503131e-16 #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 #define __DBL_HAS_DENORM__ 1 #define __DBL_HAS_INFINITY__ 1 #define __DBL_HAS_QUIET_NAN__ 1 #define __LDBL_MANT_DIG__ 64 #define __LDBL_DIG__ 18 #define __LDBL_MIN_EXP__ (-16381) #define __LDBL_MIN_10_EXP__ (-4931) #define __LDBL_MAX_EXP__ 16384 #define __LDBL_MAX_10_EXP__ 4932 #define __DECIMAL_DIG__ 21 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __LDBL_HAS_DENORM__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __DEC32_MANT_DIG__ 7 #define __DEC32_MIN_EXP__ (-95) #define __DEC32_MAX_EXP__ 96 #define __DEC32_MIN__ 1E-95DF #define __DEC32_MAX__ 9.999999E96DF #define __DEC32_EPSILON__ 1E-6DF #define __DEC32_DEN__ 0.000001E-95DF #define __DEC64_MANT_DIG__ 16 #define __DEC64_MIN_EXP__ (-383) #define __DEC64_MAX_EXP__ 384 #define __DEC64_MIN__ 1E-383DD #define __DEC64_MAX__ 9.999999999999999E384DD #define __DEC64_EPSILON__ 1E-15DD #define __DEC64_DEN__ 0.000000000000001E-383DD #define __DEC128_MANT_DIG__ 34 #define __DEC128_MIN_EXP__ (-6143) #define __DEC128_MAX_EXP__ 6144 #define __DEC128_MIN__ 1E-6143DL #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __DEC128_EPSILON__ 1E-33DL #define __DEC128_DEN__ 0.000000000000000000000000000000001E-6143DL #define __REGISTER_PREFIX__ #define __USER_LABEL_PREFIX__ _ #define __VERSION__ "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)" #define __GNUC_GNU_INLINE__ 1 #define _LP64 1 #define __LP64__ 1 #define __BLOCKS__ 1 #define __NO_INLINE__ 1 #define __FINITE_MATH_ONLY__ 0 #define __pic__ 2 #define __PIC__ 2 #define __SSP__ 1 #define __amd64 1 #define __amd64__ 1 #define __x86_64 1 #define __x86_64__ 1 #define __tune_core2__ 1 #define __MMX__ 1 #define __SSE__ 1 #define __SSE2__ 1 #define __SSE3__ 1 #define __SSE_MATH__ 1 #define __SSE2_MATH__ 1 #define __k8 1 #define __k8__ 1 #define __NO_MATH_INLINES 1 #define __LITTLE_ENDIAN__ 1 #define __MACH__ 1 #define __APPLE__ 1 clang --version Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn) Target: x86_64-apple-darwin12.1.0 echo | xcrun clang -dD -E - # 1 "<stdin>" # 1 "<stdin>" 1 # 1 "<built-in>" 1 # 1 "<built-in>" 3 #define __llvm__ 1 #define __clang__ 1 #define __clang_major__ 4 #define __clang_minor__ 0 #define __clang_patchlevel__ 0 #define __clang_version__ "4.0 ((tags/Apple/clang-421.0.60))" #define __GNUC_MINOR__ 2 #define __GNUC_PATCHLEVEL__ 1 #define __GNUC__ 4 #define __GXX_ABI_VERSION 1002 #define __ATOMIC_RELAXED 0 #define __ATOMIC_CONSUME 1 #define __ATOMIC_ACQUIRE 2 #define __ATOMIC_RELEASE 3 #define __ATOMIC_ACQ_REL 4 #define __ATOMIC_SEQ_CST 5 #define __PRAGMA_REDEFINE_EXTNAME 1 #define __VERSION__ "4.2.1 Compatible Apple Clang 4.0 ((tags/Apple/clang-421.0.60))" #define __CONSTANT_CFSTRINGS__ 1 #define __block __attribute__((__blocks__(byref))) #define __BLOCKS__ 1 #define __GXX_RTTI 1 #define __CHAR_BIT__ 8 #define __SCHAR_MAX__ 127 #define __SHRT_MAX__ 32767 #define __INT_MAX__ 2147483647 #define __LONG_MAX__ 9223372036854775807L #define __LONG_LONG_MAX__ 9223372036854775807LL #define __WCHAR_MAX__ 2147483647 #define __INTMAX_MAX__ 9223372036854775807L #define __SIZEOF_DOUBLE__ 8 #define __SIZEOF_FLOAT__ 4 #define __SIZEOF_INT__ 4 #define __SIZEOF_LONG__ 8 #define __SIZEOF_LONG_DOUBLE__ 16 #define __SIZEOF_LONG_LONG__ 8 #define __SIZEOF_POINTER__ 8 #define __SIZEOF_SHORT__ 2 #define __SIZEOF_PTRDIFF_T__ 8 #define __SIZEOF_SIZE_T__ 8 #define __SIZEOF_WCHAR_T__ 4 #define __SIZEOF_WINT_T__ 4 #define __INTMAX_TYPE__ long int #define __UINTMAX_TYPE__ long unsigned int #define __INTMAX_WIDTH__ 64 #define __PTRDIFF_TYPE__ long int #define __PTRDIFF_WIDTH__ 64 #define __INTPTR_TYPE__ long int #define __INTPTR_WIDTH__ 64 #define __SIZE_TYPE__ long unsigned int #define __SIZE_WIDTH__ 64 #define __WCHAR_TYPE__ int #define __WCHAR_WIDTH__ 32 #define __WINT_TYPE__ int #define __WINT_WIDTH__ 32 #define __SIG_ATOMIC_WIDTH__ 32 #define __CHAR16_TYPE__ unsigned short #define __CHAR32_TYPE__ unsigned int #define __FLT_DENORM_MIN__ 1.40129846e-45F #define __FLT_HAS_DENORM__ 1 #define __FLT_DIG__ 6 #define __FLT_EPSILON__ 1.19209290e-7F #define __FLT_HAS_INFINITY__ 1 #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MANT_DIG__ 24 #define __FLT_MAX_10_EXP__ 38 #define __FLT_MAX_EXP__ 128 #define __FLT_MAX__ 3.40282347e+38F #define __FLT_MIN_10_EXP__ (-37) #define __FLT_MIN_EXP__ (-125) #define __FLT_MIN__ 1.17549435e-38F #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 #define __DBL_HAS_DENORM__ 1 #define __DBL_DIG__ 15 #define __DBL_EPSILON__ 2.2204460492503131e-16 #define __DBL_HAS_INFINITY__ 1 #define __DBL_HAS_QUIET_NAN__ 1 #define __DBL_MANT_DIG__ 53 #define __DBL_MAX_10_EXP__ 308 #define __DBL_MAX_EXP__ 1024 #define __DBL_MAX__ 1.7976931348623157e+308 #define __DBL_MIN_10_EXP__ (-307) #define __DBL_MIN_EXP__ (-1021) #define __DBL_MIN__ 2.2250738585072014e-308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __LDBL_HAS_DENORM__ 1 #define __LDBL_DIG__ 18 #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __LDBL_HAS_INFINITY__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __LDBL_MANT_DIG__ 64 #define __LDBL_MAX_10_EXP__ 4932 #define __LDBL_MAX_EXP__ 16384 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __LDBL_MIN_10_EXP__ (-4931) #define __LDBL_MIN_EXP__ (-16381) #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __POINTER_WIDTH__ 64 #define __INT8_TYPE__ char #define __INT16_TYPE__ short #define __INT32_TYPE__ int #define __INT64_TYPE__ long long int #define __INT64_C_SUFFIX__ LL #define __USER_LABEL_PREFIX__ _ #define __FINITE_MATH_ONLY__ 0 #define __GNUC_STDC_INLINE__ 1 #define __NO_INLINE__ 1 #define __PIC__ 1 #define __pic__ 1 #define __FLT_EVAL_METHOD__ 0 #define __FLT_RADIX__ 2 #define __DECIMAL_DIG__ 21 #define __SSP__ 1 #define _LP64 1 #define __LP64__ 1 #define __amd64__ 1 #define __amd64 1 #define __x86_64 1 #define __x86_64__ 1 #define __core2 1 #define __core2__ 1 #define __tune_core2__ 1 #define __LITTLE_ENDIAN__ 1 #define __REGISTER_PREFIX__ #define __NO_MATH_INLINES 1 #define __SSSE3__ 1 #define __SSE3__ 1 #define __SSE2__ 1 #define __SSE2_MATH__ 1 #define __SSE__ 1 #define __SSE_MATH__ 1 #define __MMX__ 1 #define __APPLE_CC__ 5621 #define __APPLE__ 1 #define __MACH__ 1 #define OBJC_NEW_PROPERTIES 1 #define __apple_build_version__ 4210060 #define __weak __attribute__((objc_gc(weak))) #define __strong #define __unsafe_unretained #define __DYNAMIC__ 1 #define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ 1080 #define __STDC__ 1 #define __STDC_HOSTED__ 1 #define __STDC_VERSION__ 199901L # 1 "<command line>" 1 # 1 "<built-in>" 2 # 1 "<stdin>" 2 ---------------------------------------------------------------------- Comment By: Václav Zeman (wilx) Date: 2012-09-18 06:21 Message: It seems that I could just use named semaphores on MacOS X instead. I do not want to use OS specific headers if I can avoid it. I'll see what I can do later today. Could you please give me the output of "echo | g++ -dD -E -" (or similar) command? ---------------------------------------------------------------------- Comment By: Christian Rüegg (rueegg) Date: 2012-09-18 05:14 Message: Taken from http://www.opensource.apple.com/source/freeradius/freeradius-36/freeradius/src/main/threads.c Please add surrounding ifdefs #include <mach/mach.h> #include <mach/task.h> #include <mach/semaphore.h> #undef sem_t #define sem_t semaphore_t #undef sem_init #define sem_init(s,p,c) semaphore_create(mach_task_self(),s,SYNC_POLICY_FIFO,c) #undef sem_wait #define sem_wait(s) semaphore_wait(*s) #undef sem_post #define sem_post(s) semaphore_signal(*s) #undef sem_destroy #define sem_destroy(s) semaphore_destroy(mach_task_self(),*s) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=429073&aid=3568882&group_id=40830 |