diff --git a/dlls/ntdll/critsection.c b/dlls/ntdll/critsection.c index 4373fa978fa2bf21c443bd6679f530538a5ab1a5..64ef389f8cb03c6b74de7283825c702c34267dd4 100644 --- a/dlls/ntdll/critsection.c +++ b/dlls/ntdll/critsection.c @@ -141,6 +141,7 @@ static inline HANDLE get_semaphore( RTL_CRITICAL_SECTION *crit ) */ NTSTATUS WINAPI RtlInitializeCriticalSection( RTL_CRITICAL_SECTION *crit ) { + crit->DebugInfo = NULL; crit->LockCount = -1; crit->RecursionCount = 0; crit->OwningThread = 0; @@ -190,11 +191,15 @@ NTSTATUS WINAPI RtlpWaitForCriticalSection( RTL_CRITICAL_SECTION *crit ) DWORD res = WaitForSingleObject( sem, 5000L ); if ( res == WAIT_TIMEOUT ) { - ERR("Critical section %p wait timed out, retrying (60 sec) fs=%04x\n", crit, __get_fs() ); + const char *name = (char *)crit->DebugInfo; + if (!name || IsBadStringPtrA(name,80)) name = "?"; + ERR( "section %p %s wait timed out, retrying (60 sec) fs=%04x\n", + crit, debugstr_a(name), __get_fs() ); res = WaitForSingleObject( sem, 60000L ); if ( res == WAIT_TIMEOUT && TRACE_ON(relay) ) { - ERR("Critical section %p wait timed out, retrying (5 min) fs=%04x\n", crit, __get_fs() ); + ERR( "section %p %s wait timed out, retrying (5 min) fs=%04x\n", + crit, debugstr_a(name), __get_fs() ); res = WaitForSingleObject( sem, 300000L ); } } diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c index 4b8d6a296ba74dd2e80a3304cadbb968c1da6b08..12583df92906e86983048394310ec399fcbea836 100644 --- a/dlls/ntdll/rtl.c +++ b/dlls/ntdll/rtl.c @@ -21,7 +21,7 @@ DEFAULT_DEBUG_CHANNEL(ntdll); -static RTL_CRITICAL_SECTION peb_lock = CRITICAL_SECTION_INIT; +static RTL_CRITICAL_SECTION peb_lock = CRITICAL_SECTION_INIT("peb_lock"); /* * resource functions diff --git a/dlls/shell32/changenotify.c b/dlls/shell32/changenotify.c index bf180d2c2abdd663812739983eaffe4fc73a72cb..91d009951c142d9c04d61a6588ae76fda3e305b9 100644 --- a/dlls/shell32/changenotify.c +++ b/dlls/shell32/changenotify.c @@ -14,7 +14,7 @@ DEFAULT_DEBUG_CHANNEL(shell); -static CRITICAL_SECTION SHELL32_ChangenotifyCS = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION SHELL32_ChangenotifyCS = CRITICAL_SECTION_INIT("SHELL32_ChangenotifyCS"); /* internal list of notification clients (internal) */ typedef struct _NOTIFICATIONLIST diff --git a/dlls/shell32/iconcache.c b/dlls/shell32/iconcache.c index 9fbef9c2c391537c4227ff293d0332cd730960ce..192958e66d17d7ab2d2c2d768ac5950e5074f9f2 100644 --- a/dlls/shell32/iconcache.c +++ b/dlls/shell32/iconcache.c @@ -37,7 +37,7 @@ typedef struct } SIC_ENTRY, * LPSIC_ENTRY; static HDPA sic_hdpa = 0; -static CRITICAL_SECTION SHELL32_SicCS = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION SHELL32_SicCS = CRITICAL_SECTION_INIT("SHELL32_SicCS"); /***************************************************************************** * SIC_CompareEntrys [called by comctl32.dll] diff --git a/dlls/user/dde/misc.c b/dlls/user/dde/misc.c index 62835c589805e16a26e9219844fcb1801279a17a..5d971566d44149a8a5cecb19ae81f64b7354f4af 100644 --- a/dlls/user/dde/misc.c +++ b/dlls/user/dde/misc.c @@ -27,7 +27,7 @@ DEFAULT_DEBUG_CHANNEL(ddeml); static WDML_INSTANCE* WDML_InstanceList = NULL; static DWORD WDML_MaxInstanceID = 0; /* OK for present, have to worry about wrap-around later */ const char WDML_szEventClass[] = "DdeEventClass"; -CRITICAL_SECTION WDML_CritSect = CRITICAL_SECTION_INIT; +CRITICAL_SECTION WDML_CritSect = CRITICAL_SECTION_INIT("WDML_CritSect"); /* ================================================================ * diff --git a/dlls/winaspi/winaspi32.c b/dlls/winaspi/winaspi32.c index 170bd8eb00863b1d75ea1a0d2d8fb5485dafecf5..98c8fbff4513396e9e0e00a5f7715d0b54f78d6e 100644 --- a/dlls/winaspi/winaspi32.c +++ b/dlls/winaspi/winaspi32.c @@ -30,7 +30,7 @@ DEFAULT_DEBUG_CHANNEL(aspi); #ifdef linux static ASPI_DEVICE_INFO *ASPI_open_devices = NULL; -static CRITICAL_SECTION ASPI_CritSection = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION ASPI_CritSection = CRITICAL_SECTION_INIT("ASPI_CritSection"); #endif /* defined(linux) */ diff --git a/dlls/winsock/async.c b/dlls/winsock/async.c index 87612bcefa76e98922c5476dc558822f7b493b48..b46b3b03b196dbe9eb90363c03b649d0f27ca478 100644 --- a/dlls/winsock/async.c +++ b/dlls/winsock/async.c @@ -91,7 +91,7 @@ DEFAULT_DEBUG_CHANNEL(winsock); /* critical section to protect some non-rentrant net function */ -CRITICAL_SECTION csWSgetXXXbyYYY = CRITICAL_SECTION_INIT; +CRITICAL_SECTION csWSgetXXXbyYYY = CRITICAL_SECTION_INIT("csWSgetXXXbyYYY"); /* protoptypes of some functions in socket.c */ diff --git a/dlls/x11drv/x11drv_main.c b/dlls/x11drv/x11drv_main.c index 95d9abd314429b3fb8962f9be5e153d58bcd6a18..2638300460f9103b091bfe410acb33c5055653f4 100644 --- a/dlls/x11drv/x11drv_main.c +++ b/dlls/x11drv/x11drv_main.c @@ -47,7 +47,7 @@ DEFAULT_DEBUG_CHANNEL(x11drv); static void (*old_tsx11_lock)(void); static void (*old_tsx11_unlock)(void); -static CRITICAL_SECTION X11DRV_CritSection = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION X11DRV_CritSection = CRITICAL_SECTION_INIT("X11DRV_CritSection"); Screen *screen; Visual *visual; diff --git a/files/profile.c b/files/profile.c index f984058a8c90d38673ee27a15077e31d313e4794..c20fbb57276e4dab9141a9baa8253541c94c0ced 100644 --- a/files/profile.c +++ b/files/profile.c @@ -79,7 +79,7 @@ static char PROFILE_WineIniUsed[MAX_PATHNAME_LEN] = ""; static const WCHAR wininiW[] = { 'w','i','n','.','i','n','i',0 }; -static CRITICAL_SECTION PROFILE_CritSect = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION PROFILE_CritSect = CRITICAL_SECTION_INIT("PROFILE_CritSect"); static const char hex[16] = "0123456789ABCDEF"; diff --git a/graphics/x11drv/xfont.c b/graphics/x11drv/xfont.c index 7bf36e862d533c764454b72df52eb2080230729c..ed864a8fe5da318e5d00c08b897f8b8a8614f46d 100644 --- a/graphics/x11drv/xfont.c +++ b/graphics/x11drv/xfont.c @@ -306,7 +306,7 @@ static const struct CharsetBindingInfo charsetbindings[] = static int DefResolution = 0; -static CRITICAL_SECTION crtsc_fonts_X11 = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION crtsc_fonts_X11 = CRITICAL_SECTION_INIT("crtsc_fonts_X11"); static fontResource* fontList = NULL; static fontObject* fontCache = NULL; /* array */ diff --git a/include/winbase.h b/include/winbase.h index e32946fb3abc08c8b3a085d416e56681b97805c3..f8159f111d23eb914912eb87e821fd81767ade61 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -986,7 +986,7 @@ typedef DWORD CALLBACK (*LPPROGRESS_ROUTINE)(LARGE_INTEGER, LARGE_INTEGER, LARGE #define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF #ifdef __WINE__ -#define CRITICAL_SECTION_INIT { 0, -1, 0, 0, 0, 0 } +#define CRITICAL_SECTION_INIT(name) { (void *)(__FILE__ ": " name), -1, 0, 0, 0, 0 } #endif typedef struct { diff --git a/memory/virtual.c b/memory/virtual.c index be9cf7570d57b988b1c39bfefc94c987f9af7c20..5635e384fd2ae4653c5075ba512a7e092bcb096a 100644 --- a/memory/virtual.c +++ b/memory/virtual.c @@ -81,7 +81,7 @@ static const BYTE VIRTUAL_Win32Flags[16] = static FILE_VIEW *VIRTUAL_FirstView; -static CRITICAL_SECTION csVirtual = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION csVirtual = CRITICAL_SECTION_INIT("csVirtual"); #ifdef __i386__ /* These are always the same on an i386, and it will be faster this way */ diff --git a/objects/gdiobj.c b/objects/gdiobj.c index e05c890483c7c953a27444f2e55951921737a1b1..87baefca2c2d3d54803ca4c1dc1c604d034eae41 100644 --- a/objects/gdiobj.c +++ b/objects/gdiobj.c @@ -170,7 +170,7 @@ static GDIOBJHDR * StockObjects[NB_STOCK_OBJECTS] = HBITMAP hPseudoStockBitmap; /* 1x1 bitmap for memory DCs */ -static SYSLEVEL GDI_level = { CRITICAL_SECTION_INIT, 3 }; +static SYSLEVEL GDI_level = { CRITICAL_SECTION_INIT("GDI_level"), 3 }; static WORD GDI_HeapSel; static BOOL get_bool(char *buffer, BOOL def_value) diff --git a/scheduler/pthread.c b/scheduler/pthread.c index becebf30dee9f7f2f16221984ba45bb0a6995491..ab473b656dace5f10f38c6a736308b467cebeecf 100644 --- a/scheduler/pthread.c +++ b/scheduler/pthread.c @@ -121,7 +121,7 @@ strong_alias(__pthread_kill_other_threads_np, pthread_kill_other_threads_np); #define MAX_ATFORK 8 /* libc doesn't need that many anyway */ -static CRITICAL_SECTION atfork_section = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION atfork_section = CRITICAL_SECTION_INIT("atfork_section"); typedef void (*atfork_handler)(); static atfork_handler atfork_prepare[MAX_ATFORK]; static atfork_handler atfork_parent[MAX_ATFORK]; diff --git a/scheduler/syslevel.c b/scheduler/syslevel.c index 90f89892fabc3ee2f157a3ffcb9312fc42d85d65..4647e1964f6b0393a69c489b49945cb79a83f30f 100644 --- a/scheduler/syslevel.c +++ b/scheduler/syslevel.c @@ -14,7 +14,7 @@ DEFAULT_DEBUG_CHANNEL(win32); -static SYSLEVEL Win16Mutex = { CRITICAL_SECTION_INIT, 1 }; +static SYSLEVEL Win16Mutex = { CRITICAL_SECTION_INIT("Win16Mutex"), 1 }; /* Global variable to save current TEB while in 16-bit code */ WORD SYSLEVEL_Win16CurrentTeb = 0; diff --git a/windows/cursoricon.c b/windows/cursoricon.c index 93670421c7af635a3a40ab6b966cd4cd2ab6a682..88a8ace13e3b39cdd952d2cb98b027edf59eec42 100644 --- a/windows/cursoricon.c +++ b/windows/cursoricon.c @@ -78,7 +78,7 @@ typedef struct tagICONCACHE } ICONCACHE; static ICONCACHE *IconAnchor = NULL; -static CRITICAL_SECTION IconCrst = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION IconCrst = CRITICAL_SECTION_INIT("IconCrst"); static WORD ICON_HOTSPOT = 0x4242; diff --git a/windows/timer.c b/windows/timer.c index 9163dffaf82196ba325016173f7393edc47bbfc0..79f1dbb9c5841098067650ba40dc54e0daa1306b 100644 --- a/windows/timer.c +++ b/windows/timer.c @@ -35,7 +35,7 @@ typedef struct tagTIMER static TIMER TimersArray[NB_TIMERS]; -static CRITICAL_SECTION csTimer = CRITICAL_SECTION_INIT; +static CRITICAL_SECTION csTimer = CRITICAL_SECTION_INIT("csTimer"); /***********************************************************************