Bug 1977130 - Error-check pthread_getattr_np. r=glandium,spidermonkey-reviewers,jandem, a=RyanVM
Differential Revision: https://phabricator.services.mozilla.com/D258648
This commit is contained in:
committed by
rvandermeulen@mozilla.com
parent
aa0c95ed72
commit
c446c5e360
@@ -95,17 +95,16 @@ void* js::GetNativeStackBaseImpl() {
|
||||
pthread_t thread = pthread_self();
|
||||
pthread_attr_t sattr;
|
||||
pthread_attr_init(&sattr);
|
||||
pthread_getattr_np(thread, &sattr);
|
||||
int rc = pthread_getattr_np(thread, &sattr);
|
||||
MOZ_RELEASE_ASSERT(rc == 0, "pthread_getattr_np failed");
|
||||
|
||||
// stackBase will be the *lowest* address on all architectures.
|
||||
void* stackBase = nullptr;
|
||||
size_t stackSize = 0;
|
||||
int rc = pthread_attr_getstack(&sattr, &stackBase, &stackSize);
|
||||
if (rc) {
|
||||
MOZ_CRASH(
|
||||
"call to pthread_attr_getstack failed, unable to setup stack range for "
|
||||
"JS");
|
||||
}
|
||||
rc = pthread_attr_getstack(&sattr, &stackBase, &stackSize);
|
||||
MOZ_RELEASE_ASSERT(rc == 0,
|
||||
"call to pthread_attr_getstack failed, unable to setup "
|
||||
"stack range for JS");
|
||||
MOZ_RELEASE_ASSERT(stackBase,
|
||||
"invalid stack base, unable to setup stack range for JS");
|
||||
pthread_attr_destroy(&sattr);
|
||||
@@ -148,7 +147,8 @@ void* js::GetNativeStackBaseImpl() {
|
||||
* FIXME: this function is non-portable;
|
||||
* other POSIX systems may have different np alternatives
|
||||
*/
|
||||
pthread_getattr_np(thread, &sattr);
|
||||
MOZ_RELEASE_ASSERT(pthread_getattr_np(thread, &sattr) == 0,
|
||||
"pthread_getattr_np failed");
|
||||
# endif
|
||||
|
||||
void* stackBase = 0;
|
||||
|
||||
@@ -949,7 +949,8 @@ MFBT_API void MozStackWalk(MozWalkStackCallback aCallback,
|
||||
# elif defined(ANDROID)
|
||||
pthread_attr_t sattr;
|
||||
pthread_attr_init(&sattr);
|
||||
pthread_getattr_np(pthread_self(), &sattr);
|
||||
int rc = pthread_getattr_np(pthread_self(), &sattr);
|
||||
MOZ_RELEASE_ASSERT(rc == 0, "pthread_getattr_np failed");
|
||||
void* stackBase = stackEnd = nullptr;
|
||||
size_t stackSize = 0;
|
||||
if (gettid() != getpid()) {
|
||||
|
||||
Reference in New Issue
Block a user