ef115003012f61cf5539fdfeb201b98e4a92f610 |
|
31-Mar-2015 |
Yabin Cui <yabinc@google.com> |
Revert "Revert "add guard pages to the internal signal stacks"" This reverts commit a3125fd1396a09a7fc4872dc4653f342150a3deb. And Fix the prctl() problem that cause system crash. Change-Id: Icc8d12d848cfba881a7984ca2827fd81be41f9fd
|
a3125fd1396a09a7fc4872dc4653f342150a3deb |
|
31-Mar-2015 |
Elliott Hughes <enh@google.com> |
Revert "add guard pages to the internal signal stacks" This reverts commit 595752f623ae88f7e4193a6e531a0805f1c6c4dc. Change-Id: Iefa66e9049ca0424e53cd5fc320d161b93556dcb
|
595752f623ae88f7e4193a6e531a0805f1c6c4dc |
|
29-Mar-2015 |
Daniel Micay <danielmicay@gmail.com> |
add guard pages to the internal signal stacks Signal handlers tend to be lean, but can still overflow the (tiny) stack. Change-Id: Ia21c6453d92a9f8d1536ad01ff26a1a84c05f8fb
|
df79c330d895af31f39ee301dee62731fa586168 |
|
26-Mar-2015 |
Dmitriy Ivanov <dimitry@google.com> |
Initial implementation of __cxa_thread_atexit_impl This is initial implementations; does not yet handle dlclose - undefined behavior, needs linker support to handle it right. Bug: 19800080 Bug: 16696563 Change-Id: I7a3e21ed7f7ec01e62ea1b7cb2ab253590ea0686
|
673b15e4ee2c6d99b150aedddc0f389e29f98e1b |
|
19-Mar-2015 |
Yabin Cui <yabinc@google.com> |
Let g_thread_list_lock only protect g_thread_list. As glibc/netbsd don't protect access to thread struct members by a global lock, we don't want to do it either. This change reduces the responsibility of g_thread_list_lock to only protect g_thread_list. Bug: 19636317 Change-Id: I897890710653dac165d8fa4452c7ecf74abdbf2b
|
58cf31b50699ed9f523de38c8e943f3bbd1ced9e |
|
07-Mar-2015 |
Yabin Cui <yabinc@google.com> |
Make pthread join_state not protected by g_thread_list_lock. 1. Move the representation of thread join_state from pthread.attr.flag to pthread.join_state. This clarifies thread state change. 2. Use atomic operations for pthread.join_state. So we don't need to protect it by g_thread_list_lock. g_thread_list_lock will be reduced to only protect g_thread_list or even removed in further changes. Bug: 19636317 Change-Id: I31fb143a7c69508c7287307dd3b0776993ec0f43
|
19e246dda6772ffc532b1762cd7870d6c3b01c12 |
|
18-Dec-2014 |
Yabin Cui <yabinc@google.com> |
Fix possible leak in pthread_detach. If pthread_detach() is called while the thread is in pthread_exit(), it takes the risk that no one can free the pthread_internal_t. So I add PTHREAD_ATTR_FLAG_ZOMBIE to detect this, maybe very rare, but both glibc and netbsd libpthread have similar function. Change-Id: Iaa15f651903b8ca07aaa7bd4de46ff14a2f93835
|
ba8dfc2669d658dc340eb8f9c9b40ca074f05047 |
|
06-Jan-2015 |
Yabin Cui <yabinc@google.com> |
Remove PTHREAD_ATTR_FLAG_USER_ALLOCATED_STACK. Patch for https://android-review.googlesource.com/#/c/120844/. Change-Id: Idca5ccd7b28e8f07f1d2d1b6e3bba6781b62f0e0
|
6a7aaf46759db32c6ed0eb953a4a230dc96af0d9 |
|
23-Dec-2014 |
Yabin Cui <yabinc@google.com> |
Reserve enough user request stack space in pthread_create. Bug: 18830897 Change-Id: I1ba4aaeaf66a7ff99c5d82ad45469011171b0a3b
|
8cf1b305670123aed7638d984ca39bfd22388440 |
|
04-Dec-2014 |
Yabin Cui <yabinc@google.com> |
Use mmap to create the pthread_internal_t Add name to mmaped regions. Add pthread benchmark code. Allocate pthread_internal_t on regular stack. Bug: 16847284 Change-Id: Id60835163bb0d68092241f1a118015b5a8f85069
|
8574a0670bf698b8d2f817098f9d825c4be03a68 |
|
02-Dec-2014 |
Yabin Cui <yabinc@google.com> |
Use mmap to create the pthread_internal_t. Bug: 16847284 Change-Id: I488fa236f57aa3acb29b4ffbbab2fab51b0653be
|
5b8ceff5f87889e781c13305767e140afd28eb76 |
|
26-Nov-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Use mmap to create the pthread_internal_t." Unfortunately, this change provokes random crashes for ART, and I have seen libc crashes on the device that might be related to it. Reverting it fixes the ART crashes. there is unfortunately no stack trace for the crashes, but just a "Segmentation fault" message. This reverts commit cc5f6543e3f91385b9a912438965b7e8265df54a. Change-Id: I68dca8e1e9b9edcce7eb84596e8db619e40e8052
|
cc5f6543e3f91385b9a912438965b7e8265df54a |
|
25-Nov-2014 |
Yabin Cui <yabinc@google.com> |
Use mmap to create the pthread_internal_t. Bug: 16847284 Change-Id: Ic8c85f95afac1d8422ecb69674c688d1fecb6a44
|
18d93f2793fad393b6aa6eae6afe1054958339d5 |
|
06-Aug-2014 |
Christopher Ferris <cferris@google.com> |
Do a second key cleanup in pthread_exit. During pthread_exit, the keys are cleaned. Unfortunately, a call to free occurs after the cleanup and the memory for some of the keys is recreated when using jemalloc. The solution is to do the key cleanup twice. Also, modify the pthread_detach__leak test to be less flaky when run on a jemalloc system. Bug: 16513133 Change-Id: Ic17e8344bdc1ba053c4f5b6d827a4c19c57860c1
|
e380960813bbb6e05d820eb75885556a1c4bf6ac |
|
06-Aug-2014 |
Christopher Ferris <cferris@google.com> |
Do a second key cleanup in pthread_exit. During pthread_exit, the keys are cleaned. Unfortunately, a call to free occurs after the cleanup and the memory for some of the keys is recreated when using jemalloc. The solution is to do the key cleanup twice. Also, modify the pthread_detach__leak test to be less flaky when run on a jemalloc system. Bug: 16513133 (cherry picked from commit 18d93f2793fad393b6aa6eae6afe1054958339d5) Change-Id: Idb32e7f9b09e2c088d256ed9eb881df80c81ff8e
|
11bf8a3025a7b5aee891c521255a7db1860e5b12 |
|
30-Jul-2014 |
Elliott Hughes <enh@google.com> |
Only wipe TLS for user-supplied stacks. Bug: 16667988 (cherry picked from commit 40a521744825b6060960c296d5fb3da4c6593d94) Change-Id: I7550fa47b76e643323aa3e2a53529e393c829e47
|
40a521744825b6060960c296d5fb3da4c6593d94 |
|
30-Jul-2014 |
Elliott Hughes <enh@google.com> |
Only wipe TLS for user-supplied stacks. Bug: 16667988 Change-Id: Id180ab2bc6713e1612386120a306db5bbf1d6046
|
6203e7b853a587fbd70cea2e58b63ae38a71a13e |
|
30-May-2014 |
Elliott Hughes <enh@google.com> |
Add some missing __noreturn attributes. This is more honest, and lets us remove a hack. Change-Id: I309f064743ded5248573ccafc379f78d417db08d
|
1728b2396591853345507a063ed6075dfd251706 |
|
14-May-2014 |
Elliott Hughes <enh@google.com> |
Switch to g_ for globals. That's what the Google style guide recommends, and we're starting to get a mix. Change-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc
|
2aace21a19b6be8f6a427fc664d4175f0bf832c9 |
|
22-Dec-2013 |
Elliott Hughes <enh@google.com> |
Remove the bogus exit status from _exit_with_stack_teardown. It should always be 0, and there's no reason to pass a constant in as an argument. Change-Id: I92ac59b718a18e298bd7c52821af447f9181ca2a
|
960ee37f2aaf52bbec2f6265fd6e30fb2b41fef3 |
|
11-Dec-2013 |
Elliott Hughes <enh@google.com> |
Clarify a comment. Change-Id: Iad2e33fb059170f808023ce3d17e9b8c13191f42
|
101fb7d963ed362c4e351d95e55cbd70dc59eac3 |
|
07-Dec-2013 |
Christopher Ferris <cferris@google.com> |
Do not clear tids on detached threads. Make sure that the kernel isn't going to try and clear the tid of freed memory. Bug: 11963327 Change-Id: I95d02340bfbe92f56036d2cc58dbf0e3079eb7c3
|
877ec6d90418ff1d6597147d355a2229fdffae7e |
|
16-Nov-2013 |
Elliott Hughes <enh@google.com> |
Fix pthread_join. Let the kernel keep pthread_internal_t::tid updated, including across forks and for the main thread. This then lets us fix pthread_join to only return after the thread has really exited. Also fix the thread attributes of the main thread so we don't unmap the main thread's stack (which is really owned by the dynamic linker and contains things like environment variables), which fixes crashes when joining with an exited main thread and also fixes problems reported publicly with accessing environment variables after the main thread exits (for which I've added a new unit test). In passing I also fixed a bug where if the clone(2) inside pthread_create(3) fails, we'd unmap the child's stack and TLS (which contains the mutex) and then try to unlock the mutex. Boom! It wasn't until after I'd uploaded the fix for this that I came across a new public bug reporting this exact failure. Bug: 8206355 Bug: 11693195 Bug: https://code.google.com/p/android/issues/detail?id=57421 Bug: https://code.google.com/p/android/issues/detail?id=62392 Change-Id: I2af9cf6e8ae510a67256ad93cad891794ed0580b
|
61fb3fc770566c7bafe7af8fb93590bcad387fbb |
|
07-Nov-2013 |
Elliott Hughes <enh@google.com> |
Prepare to switch to the uapi <linux/signal.h>. <time.h> didn't need to copy the cruft from <signal.h>, and <signal.h> only needs the uid_t hack when it's not using uapi headers. pthread_exit.cpp should include what it uses. Change-Id: I836c36abe0f0a781d41fc425b249d1c7686bb124
|
c3f114037dbf028896310609fd28cf2b3da99c4d |
|
30-Oct-2013 |
Elliott Hughes <enh@google.com> |
<pthread.h> fixes and pthread cleanup. <pthread.h> was missing nonnull attributes, noreturn on pthread_exit, and had incorrect cv qualifiers for several standard functions. I've also marked the non-standard stuff (where I count glibc rather than POSIX as "standard") so we can revisit this cruft for LP64 and try to ensure we're compatible with glibc. I've also broken out the pthread_cond* functions into a new file. I've made the remaining pthread files (plus ptrace) part of the bionic code and fixed all the warnings. I've added a few more smoke tests for chunks of untested pthread functionality. We no longer need the libc_static_common_src_files hack for any of the pthread implementation because we long since stripped out the rest of the armv5 support, and this hack was just to ensure that __get_tls in libc.a went via the kernel if necessary. This patch also finishes the job of breaking up the pthread.c monolith, and adds a handful of new tests. Change-Id: Idc0ae7f5d8aa65989598acd4c01a874fe21582c7
|