Re: MacOS X 10.3 build problems

Alexander Malysh <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
Hi,

flip phillips wrote:

> Almost!
> It compiles but fails when run - PANIC: Error while
> pthread_rwlock_rdlock
> Seems related?

that's very very bad :( I have fixed cvs to catch init errors too, please
get it a try (I would like to know if already init fail and wich error we
got)... I don't know, what's wrong?

P.S. Attached you can find a patch that possible fixes this issue, but I'm
unsure. Please apply it and report if it works for you...


> 
> [ebv.skidmore.edu] % bearerbox ./doc/examples/kannel.conf
> 2004-08-08 19:52:59 [15626] [0] INFO: Debug_lvl = -1, log_file =
> <none>, log_lvl = 0
> 2004-08-08 19:52:59 [15626] [0] WARNING: DLR: using default 'internal'
> for storage type.
> 2004-08-08 19:52:59 [15626] [0] INFO: DLR using storage type: internal
> 2004-08-08 19:52:59 [15626] [0] DEBUG: Kannel bearerbox version
> `cvs-20040808'.
> Build `Aug  8 2004 19:51:12', compiler `3.3 20030304 (Apple Computer,
> Inc. build 1435)'.
> System Darwin, release 7.4.0, version Darwin Kernel Version 7.4.0: Wed
> May 12 16:58:24 PDT 2004; root:xnu/xnu-517.7.7.obj~7/RELEASE_PPC ,
> machine Power Macintosh.
> Hostname ebv.skidmore.edu, IP 141.222.88.130.
> Libxml version 2.5.4.
> Using native malloc.
> 
> 2004-08-08 19:52:59 [15626] [0] INFO: SSL not supported, no SSL
> initialization done.
> 2004-08-08 19:52:59 [15626] [0] INFO: HTTP: Opening server at port
> 13000.
> 2004-08-08 19:52:59 [15626] [0] DEBUG: Started thread 1
> (gwlib/fdset.c:poller)
> 2004-08-08 19:52:59 [15626] [1] DEBUG: Thread 1 (gwlib/fdset.c:poller)
> maps to pid 15626.
> 2004-08-08 19:52:59 [15626] [0] DEBUG: Started thread 2
> (gwlib/http.c:server_thread)
> 2004-08-08 19:52:59 [15626] [2] DEBUG: Thread 2
> (gwlib/http.c:server_thread) maps to pid 15626.
> 2004-08-08 19:52:59 [15626] [0] DEBUG: Started thread 3
> (gw/bb_http.c:httpadmin_run)
> 2004-08-08 19:53:00 [15626] [3] DEBUG: Thread 3
> (gw/bb_http.c:httpadmin_run) maps to pid 15626.
> 2004-08-08 19:53:00 [15626] [0] INFO:
> ----------------------------------------
> 2004-08-08 19:53:00 [15626] [0] INFO: Kannel bearerbox II version
> cvs-20040808 starting
> 2004-08-08 19:53:05 [15626] [0] INFO: MAIN: Start-up done, entering
> mainloop
> 2004-08-08 19:53:05 [15626] [0] PANIC: Error while
> pthread_rwlock_rdlock.
> 2004-08-08 19:53:05 [15626] [0] PANIC: System error 22: Invalid argument
> 
> On Aug 8, 2004, at 4:39 PM, [email protected] wrote:
> 
>>
>> Hi,
>>
>> indeed it's a bug :( I have fixed this in cvs, please get it a try...
>>
>> P.S. from:
>> http://www.opengroup.org/onlinepubs/009695399/basedefs/pthread.h.html
>> (PTHREAD_RWLOCK_INITIALIZER is deleted for alignment with IEEE Std
>> 1003.1j-2000)
>>

-- 
Thanks,
Alex
gw-rwlock-attr.diff (text/x-diff, 1.5 KB)
Index: gwlib/gw-rwlock.c
===================================================================
RCS file: /home/cvs/gateway/gwlib/gw-rwlock.c,v
retrieving revision 1.3
diff -a -u -p -r1.3 gw-rwlock.c
--- gwlib/gw-rwlock.c	9 Aug 2004 09:06:22 -0000	1.3
+++ gwlib/gw-rwlock.c	9 Aug 2004 09:17:33 -0000
@@ -68,11 +68,20 @@
 
 RWLock *gw_rwlock_create(void)
 {
+    pthread_rwlockattr_t attr;
     RWLock *ret = gw_malloc(sizeof(*ret));
-    int rc = pthread_rwlock_init(&ret->rwlock, NULL);
+    int rc;
+
+    rc = pthread_rwlockattr_init(&attr);
+    if (rc != 0)
+        panic(rc, "Initialization of pthread_rwlockattr_t failed.");
+    rc = pthread_rwlock_init(&ret->rwlock, &attr);
     if (rc != 0)
         panic(rc, "Initialization of RWLock failed.");
     ret->dynamic = 1;
+    rc = pthread_rwlockattr_destroy(&attr);
+    if (rc != 0)
+        error(rc, "Could not destroy pthread_rwlockattr_t.");
 
     return ret;
 }
@@ -80,10 +89,19 @@ RWLock *gw_rwlock_create(void)
 
 void gw_rwlock_init_static(RWLock *lock)
 {
-    int rc = pthread_rwlock_init(&lock->rwlock, NULL);
+    pthread_rwlockattr_t attr;
+    int rc;
+
+    rc = pthread_rwlockattr_init(&attr);
+    if (rc != 0)
+        panic(rc, "Initialization of pthread_rwlockattr_t failed.");
+    rc = pthread_rwlock_init(&lock->rwlock, &attr);
     if (rc != 0)
         panic(rc, "Initialization of RWLock failed.");
     lock->dynamic = 0;
+    rc = pthread_rwlockattr_destroy(&attr);
+    if (rc != 0)
+        error(rc, "Could not destroy pthread_rwlockattr_t.");
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.