You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The dynamic_load_test is broken if you additionally call s2n_atexit_disable(). This is an important usecase since apparently this is how CRT is used.
The cause of this bug is that when our atexit handler is disabled, the call to s2n_cleanup fully cleans up the library. This means that the destructor to delete the pthread key is a no-op, as it is gated by s2n_is_initialized. So when atexit is disabled, we never delete the pthread key and each subsequent thread that calls s2n_init() creates a new pthread key. If we go over PTHREAD_KEYS_MAX threads, the call to s2n_init() will error since we've run out of keys.
This issue adds other notch to issues linked to our randomness module #4348
Solution:
Not sure what the solution is. We can't remove the is_initialized() call in the pthread destructor because we added it for a bugfix: #4085
Requirements / Acceptance Criteria:
s2n_dynamic_load_test can call s2n_disabled_atexit and succeed.
Out of scope:
N/A
The text was updated successfully, but these errors were encountered:
Problem:
The dynamic_load_test is broken if you additionally call s2n_atexit_disable(). This is an important usecase since apparently this is how CRT is used.
The cause of this bug is that when our atexit handler is disabled, the call to s2n_cleanup fully cleans up the library. This means that the destructor to delete the pthread key is a no-op, as it is gated by s2n_is_initialized. So when atexit is disabled, we never delete the pthread key and each subsequent thread that calls s2n_init() creates a new pthread key. If we go over PTHREAD_KEYS_MAX threads, the call to s2n_init() will error since we've run out of keys.
This issue adds other notch to issues linked to our randomness module #4348
Solution:
Not sure what the solution is. We can't remove the is_initialized() call in the pthread destructor because we added it for a bugfix: #4085
Requirements / Acceptance Criteria:
s2n_dynamic_load_test can call s2n_disabled_atexit and succeed.
Out of scope:
N/A
The text was updated successfully, but these errors were encountered: