Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix segfault if pthread_getattr_np fails #76521

Merged
merged 2 commits into from
Sep 21, 2020

Commits on Sep 9, 2020

  1. Fix segfault if pthread_getattr_np fails

    glibc destroys[1] the passed pthread_attr_t if pthread_getattr_np()
    fails.  Destroying it again leads to a segfault.  Fix it by only
    destroying it on success for glibc.
    
    [1]: https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/pthread_getattr_np.c;h=ce437205e41dc05653e435f6188768cccdd91c99;hb=HEAD#l205
    tavianator committed Sep 9, 2020
    Configuration menu
    Copy the full SHA
    a06edda View commit details
    Browse the repository at this point in the history
  2. Only call pthread_attr_destroy() after getattr_np() succeeds on all l…

    …ibcs
    
    The calling convention of pthread_getattr_np() is to initialize the
    pthread_attr_t, so _destroy() is only necessary on success (and _init()
    isn't necessary beforehand).  On the other hand, FreeBSD wants the
    attr_t to be initialized before pthread_attr_get_np(), and therefore it
    should always be destroyed afterwards.
    tavianator committed Sep 9, 2020
    Configuration menu
    Copy the full SHA
    a684153 View commit details
    Browse the repository at this point in the history