Verified Commit 46e5279e authored by Steve Fink's avatar Steve Fink Committed by ma1
Browse files

Bug 1977130 - Error-check pthread_getattr_np. r=glandium,spidermonkey-reviewers,jandem, a=RyanVM

parent 14420c7c
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -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;
+2 −1
Original line number Diff line number Diff line
@@ -695,7 +695,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()) {