Changeset 25604 in vbox
- Timestamp:
- Dec 31, 2009 2:25:17 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 56295
- Location:
- trunk/src/VBox/Runtime
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/misc/lockvalidator.cpp
r25603 r25604 251 251 RTAssertMsg1Weak("RTLockValidator", pSrcPos->uLine, pSrcPos->pszFile, pSrcPos->pszFunction); 252 252 if (pSrcPos->uId) 253 RTAssertMsg2Weak("%s [uId=%p thrd=%s]\n", pszWhat, pSrcPos->uId, VALID_PTR(pThreadSelf) ? pThreadSelf->szName : "<NIL>");253 RTAssertMsg2Weak("%s [uId=%p thrd=%s]\n", pszWhat, pSrcPos->uId, VALID_PTR(pThreadSelf) ? pThreadSelf->szName : "<NIL>"); 254 254 else 255 255 RTAssertMsg2Weak("%s\n", pszWhat, pSrcPos->uId); … … 1444 1444 * 1445 1445 * @param pStack The chain of locks causing the deadlock. 1446 * @param pRec The record relating to the current thread's lock 1447 * operation. 1446 1448 * @param pThreadSelf This thread. 1447 1449 * @param pSrcPos Where we are going to deadlock. 1448 1450 * @param rc The return code. 1449 1451 */ 1450 static void rcLockValidatorDoDeadlockComplaining(PRTLOCKVALIDATORDDSTACK pStack, PRT THREADINT pThreadSelf,1451 P CRTLOCKVALIDATORSRCPOS pSrcPos, int rc)1452 static void rcLockValidatorDoDeadlockComplaining(PRTLOCKVALIDATORDDSTACK pStack, PRTLOCKVALIDATORRECUNION pRec, 1453 PRTTHREADINT pThreadSelf, PCRTLOCKVALIDATORSRCPOS pSrcPos, int rc) 1452 1454 { 1453 1455 if (!ASMAtomicUoReadBool(&g_fLockValidatorQuiet)) 1454 1456 { 1455 1457 rtLockValidatorComplainFirst( rc == VERR_SEM_LV_DEADLOCK 1456 ? " deadlock"1458 ? "Detected deadlock!" 1457 1459 : rc == VERR_SEM_LV_EXISTING_DEADLOCK 1458 ? " existing-deadlock"1460 ? "Found existing deadlock!" 1459 1461 : "!unexpected rc!", 1460 pSrcPos, pThreadSelf, NULL); 1461 rtLockValidatorComplainMore("---- start of %u entry deadlock chain ----\n", pStack->c); 1462 pSrcPos, 1463 pThreadSelf, 1464 pStack->a[0].pRec != pRec ? pRec : NULL); 1465 rtLockValidatorComplainMore("---- start of deadlock chain - %u entries ----\n", pStack->c); 1462 1466 for (uint32_t i = 0; i < pStack->c; i++) 1463 1467 { 1464 1468 char szPrefix[24]; 1465 RTStrPrintf(szPrefix, sizeof(szPrefix), "#% u: ", i);1469 RTStrPrintf(szPrefix, sizeof(szPrefix), "#%02u: ", i); 1466 1470 PRTLOCKVALIDATORSHAREDONE pSharedOne = NULL; 1467 1471 if (pStack->a[i].pRec->Core.u32Magic == RTLOCKVALIDATORSHARED_MAGIC) … … 1514 1518 } 1515 1519 1516 rcLockValidatorDoDeadlockComplaining(&Stack, p ThreadSelf, pSrcPos, rc);1520 rcLockValidatorDoDeadlockComplaining(&Stack, pRec, pThreadSelf, pSrcPos, rc); 1517 1521 return rc; 1518 1522 #else -
trunk/src/VBox/Runtime/generic/critsect-generic.cpp
r25491 r25604 69 69 pCritSect->cLockers = -1; 70 70 pCritSect->NativeThreadOwner = NIL_RTNATIVETHREAD; 71 int rc = RTLockValidatorRecCreate(&pCritSect->pValidatorRec, NIL_RTLOCKVALIDATORCLASS, 0, NULL, pCritSect);71 int rc = RTLockValidatorRecCreate(&pCritSect->pValidatorRec, NIL_RTLOCKVALIDATORCLASS, 0, "RTCritSect", pCritSect); 72 72 if (RT_SUCCESS(rc)) 73 73 { -
trunk/src/VBox/Runtime/r3/linux/semmutex-linux.cpp
r25491 r25604 120 120 pThis->cNesting = 0; 121 121 #ifdef RTSEMMUTEX_STRICT 122 RTLockValidatorRecInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);122 RTLockValidatorRecInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, "RTSemMutex", pThis); 123 123 #endif 124 124 -
trunk/src/VBox/Runtime/r3/posix/semmutex-posix.cpp
r25491 r25604 102 102 pThis->u32Magic = RTSEMMUTEX_MAGIC; 103 103 #ifdef RTSEMMUTEX_STRICT 104 RTLockValidatorRecInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);104 RTLockValidatorRecInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, "RTSemMutex", pThis); 105 105 #endif 106 106 -
trunk/src/VBox/Runtime/r3/posix/semrw-posix.cpp
r25602 r25604 119 119 pThis->Writer = (pthread_t)-1; 120 120 #ifdef RTSEMRW_STRICT 121 RTLockValidatorRecInit(&pThis->ValidatorWrite, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);122 RTLockValidatorSharedRecInit(&pThis->ValidatorRead, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);121 RTLockValidatorRecInit(&pThis->ValidatorWrite, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, "RTSemRW", pThis); 122 RTLockValidatorSharedRecInit(&pThis->ValidatorRead, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, "RTSemRW", pThis); 123 123 RTLockValidatorMakeSiblings(&pThis->ValidatorWrite.Core, &pThis->ValidatorRead.Core); 124 124 #endif -
trunk/src/VBox/Runtime/r3/win/semmutex-win.cpp
r25491 r25604 87 87 pThis->hMtx = hMtx; 88 88 #ifdef RTSEMMUTEX_STRICT 89 RTLockValidatorRecInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);89 RTLockValidatorRecInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, "RTSemMutex", pThis); 90 90 #endif 91 91 *pMutexSem = pThis; -
trunk/src/VBox/Runtime/testcase/tstDeadlock.cpp
r25602 r25604 136 136 for (i = 0; i < cThreads && RT_SUCCESS(rc); i++) 137 137 RTTEST_CHECK_RC_OK(g_hTest, rc = RTThreadCreateF(&g_ahThreads[i], test1Thread, (void *)(uintptr_t)i, 0, 138 RTTHREADTYPE_DEFAULT, RTTHREADFLAGS_WAITABLE, "test1-% u", i));138 RTTHREADTYPE_DEFAULT, RTTHREADFLAGS_WAITABLE, "test1-%02u", i)); 139 139 if (RT_SUCCESS(rc)) 140 140 {
Note:
See TracChangeset
for help on using the changeset viewer.