sigchain: always call InitializeSignalChain on startup.
Processes that link against libsigchain because they might want to dynamically load libart.so (e.g. surfaceflinger) might never explicitly call InitializeSignalChain. In this scenario, the lazy initialization that occurs when sigprocmask is called can happen at unexpected times, such as from pthread_exit, leading to deadlocks or crashes. Add __attribute__((constructor)) to InitializeSignalChain to have it be automatically called upon process start. Keep the existing calls to it in the wrapper functions in order to sidestep problems around static initialization order. Bug: https://issuetracker.google.com/37119593 Test: run-test 004-SignalTest Test: m test-art-host Test: m test-art-target Change-Id: I7906c1f625ccca0350ea9310140a3f43a657be4c
Loading
Please sign in to comment