On Wed Nov 2 10:13:47 2022 +0000, Wu Liande wrote:
The application loads two different a.so b.so, they define the global variable g_t with the same name. When dynamically linked, only one g_t is recorded in the global symbol table. Caused the address of one of the variables to be overwritten, which caused an unpredictable error. _Condition_variable_notify_one and DEFINE_THISCALL_WRAPPER(_Condition_variable_notify_one, 4) define two var of same name in different file。
Sorry but it still doesn't make sense for me. While I understand it might be a problem for Unix application that loads multiple .so files I don't see what's the problem in Wine's case. Do you see the crash in Windows application? What are the steps to reproduce the problem?
FWIW I don't argue about the changes you made. The _Condition_variable_* function pointers should be static. I just don't understand the commit message / the problem you're seeing.