harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Salikh Zakirov (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-3288) [drlvm][thread] Use Pthreads/Win32 rather than APR for mutexes and condition variables
Date Thu, 15 Mar 2007 18:24:09 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-3288?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12481272
] 

Salikh Zakirov commented on HARMONY-3288:
-----------------------------------------

I've attached updated patch series (patches 0001-0010), which addresses most of the issues,
specifically
1) thread creation interfaces have been added to OS layer, to facilitate independence of ARP
thread API and APR pools
2) hycond and hymutex OS-specific code has been separated using files rather than #ifdefs
3) cunit test linking problem worked around (patch 0010)
4) linux version also implemented and tested

The known regression are
- on Linux, the test gc.SynchronizedFinilazersTest occasionally crashes on pthread_kill with
NULL pthread_t. This definitely related to the thread block reuse. Apparently, the old thread
block which has been reused for a new, maybe yet unborn thread, is still linked to the thread
list, and is present in the all thread iteration.

I wasn't quite able to find the root cause of this issue, but since I'm planning to go on
with HARMONY-3289 to make the thread block lifecycle shorter and more explicit, I hope to
be able to fix the issue soon.

> [drlvm][thread] Use Pthreads/Win32 rather than APR for mutexes and condition variables
> --------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3288
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3288
>             Project: Harmony
>          Issue Type: Improvement
>          Components: DRLVM
>            Reporter: Salikh Zakirov
>         Assigned To: weldon washburn
>         Attachments: 0001-allocate-monitors-latches-and-semaphores-from-C-heap.patch,
0002-Introduce-OS-layer-for-thread-functions-instead-of-APR.patch, 0003-Fix-cunit-tests-to-pass-a-valid-stack-size-attribute.patch,
0004-Rewrite-hymutex-and-hycond-to-use-OS-layer-instead-of-APR.patch, 0005-fixed-callers-of-hymutex-and-hycond-to-use-address.patch,
0006-Remove-thread-local-pool.patch, 0007-Remove-thread-pool-completely.patch, 0008-replaced-apr_get_thread_time-s-with-hythread_get_thread_times.patch,
0009-Add-assertions-on-os_handle.patch, 0010-Fix-cunit-test-linking-with-APR-problem.patch
>
>
> Currently DRLVM uses APR mutexes and condition variables. These require APR memory pools
to be allocated from,
> and releasing memory pools may be tricky at times. For example, the memory lifecycle
of the native monitor is associated
> with the java object lifecycle, thus requires a specific object-specific pool. While
this solution is possible, it will incur
> significant memory overhead.
> The attached patch series proposes a simplified model by using Pthreads or Win32 interfaces
directly, without layering APR.
> It allows for explicit memory allocation and deallocation, and makes fixing thread memory
model much easier.
> The patch series is incomplete, as it still uses APR thread creation APIs, and thus APR
pools are still created for every thread.
> I will work further to remove this dependency as well.
> The patches

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message