Dear Rick,
Im talking about the mutex test Erich asked me yesterday to compile and run on
the Android Device.
https://android.googlesource.com/platform/system/extras/+/froyo/tests/bionic/libc/bionic/test_mutex.c
Thats the codeblock where the error occured in test_mutex.c:
/* error-check mutex */
expect( pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_ERRORCHECK ), 0 );
expect( pthread_mutex_init( &lock, &attr ), 0 );
expect( pthread_mutex_lock( &lock ), 0 );
expect( pthread_mutex_lock( &lock ), EDEADLK );
expect( pthread_mutex_unlock( &lock ), 0 );
expect( pthread_mutex_trylock( &lock ), 0 );
expect( pthread_mutex_trylock( &lock ), EDEADLK ); /*Changed to EBUSY here*/
expect( pthread_mutex_unlock( &lock ), 0 );
expect( pthread_mutex_unlock( &lock ), EPERM );
expect( pthread_mutex_destroy( &lock ), 0 );
The line with the comment
/*Changed to EBUSY here*/
is the line in question. A line above pthread_mutex_trylock locks the mutex and
in the next line (bold) tries to lock again. The expected value is “EDEADLK
(35)” which is wrong if I understand correctly because trylock should return
“EBUSY (16)” instead of “EDEADLK”.
If I understand the program correctly, its task is to return an error here but
16 and not 35. So I changed “EDEADLK” to “EBUSY”.
So the change seems reasonable to me.
Maybe I did not understand your answer correctly?
Best regards
Thomas
On 7/6/21 12:52 PM, Rick McGuire wrote:
That is not a good fix. This should not be returning an error at all, since
this is just a nested request for the semaphore. There's still something wrong
going on with the recursive semaphores.
Rick
On Tue, Jul 6, 2021 at 6:46 AM Thomas Kahr
<[email protected]<mailto:[email protected]>> wrote:
Hi all,
below is an update on the mutex test.
It works perfectly. The problem was in the code it seems. According to the
POSIX standard pthread_mutex_trylock should return errorcode 16 (EBUSY) if the
mutex is already locked. But the expectation value in the mutex test is given
with EDEADLK (Errorcode 35) as showed in my mail from yesterday. So after I
changed the expectation value to EBUSY everything works as hoped. 16 is
expected and returned.
Best regards
Thomas
On 7/5/21 9:25 PM, Rick McGuire wrote:
And so many other things will fail if that line is removed.
Rick
On Mon, Jul 5, 2021 at 3:18 PM Thomas Kahr
<[email protected]<mailto:[email protected]>> wrote:
Additional Info to the mutex test:
Without the line:
expect( pthread_mutex_trylock( &lock ), EDEADLK );
The program runs fine and I get an "OK". So everything works except this one
line.
Best regards
Thomas
On 7/5/21 6:34 PM, Erich Steinböck wrote:
problems getting the configuration for the semaphores to work correctly
There really aren't a lot of configuration options any more. I just recently
cleaned up the SysSempahore code with revision 12259.
And I now believe that we cannot run at all without both
pthread_mutexattr_settype and PTHREAD_MUTEX_RECURSIVE so I might as well remove
that option too (all of our platforms that we currently run builds on have
support for those.)
Thomas, are you at revision 12259 or later? If not can you please update?
The last time you reported the CMake status of the various pthread
functionality, you showed some "failed"
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_mutexattr_settype
-- Looking for pthread_mutexattr_settype - not found
-- Looking for pthread_mutex_timedlock
-- Looking for pthread_mutex_timedlock - not found
-- Performing Test HAVE_PTHREAD_MUTEX_ERRORCHECK
-- Performing Test HAVE_PTHREAD_MUTEX_ERRORCHECK - Failed
-- Performing Test HAVE_PTHREAD_MUTEX_RECURSIVE
-- Performing Test HAVE_PTHREAD_MUTEX_RECURSIVE - Failed
What's the current status?
To test the actual mutex functionality on Android, can you compile and run this
test?
https://android.googlesource.com/platform/system/extras/+/froyo/tests/bionic/libc/bionic/test_mutex.c
Please also test whether " #define __USE_UNIX98 1" is required to successfully
compile/run.
_______________________________________________
Oorexx-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/oorexx-devel
_______________________________________________
Oorexx-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/oorexx-devel
_______________________________________________
Oorexx-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/oorexx-devel
_______________________________________________
Oorexx-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/oorexx-devel
_______________________________________________
Oorexx-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/oorexx-devel
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel