Changeset 105464 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Jul 24, 2024 9:01:57 AM (9 months ago)
- svn:sync-xref-src-repo-rev:
- 164123
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/DBGFR3BugCheck.cpp
r105409 r105464 609 609 case 0x00000138: cchUsed = RTStrPrintf(pszDetails, cbDetails, "GPIO_CONTROLLER_DRIVER_ERROR\n"); break; 610 610 611 case 0x00000139: 611 case 0x00000139: /* __fastfail(P1) triggers this via INT 29h(?) and P1 in rcx. */ 612 612 { 613 613 const char *pszCheck; … … 618 618 case 0x02: pszCheck = "Stack buffer overrun (via cookie)"; break; 619 619 case 0x03: pszCheck = "Correupt LIST_ENTRY"; break; 620 case 0x04: pszCheck = "Out of bounds stack pointer"; break; 620 case 0x04: pszCheck = "Out of bounds stack pointer"; break; /* "Reserved" on learn.microsoft.com */ 621 621 case 0x05: pszCheck = "Invalid parameter (fatal)"; break; 622 622 case 0x06: pszCheck = "Uninitialized stack cookie (by loader prior to Win8)"; break; … … 625 625 case 0x09: pszCheck = "Direct RtlQueryRegistryValues w/o typechecking on untrusted hive"; break; 626 626 /* https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check---bug-check-0x139-kernel-security-check-failure 627 and !analyze -show differs on the following: */ 628 case 0x0a: case 0x0b: case 0x0c: case 0x0d: case 0x0e: 629 case 0x0f: pszCheck = "Memory safety violation [?]"; break; 630 case 0x10: pszCheck = "Invalid indirect call (indirect call guard) [?]"; break; 631 case 0x11: pszCheck = "Invalid memory write (write guard) [?]"; break; 632 case 0x12: pszCheck = "Invalid target context for fiber switch [?]"; break; 633 case 0x13: pszCheck = "Invalid register context assignment"; break; 634 case 0x14: pszCheck = "Invalid object reference count"; break; 635 case 0x15: case 0x16: case 0x17: 636 case 0x1a: case 0x1b: case 0x1c: case 0x1d: case 0x1e: 637 case 0x1f: pszCheck = "Memory safety violation"; break; 638 case 0x18: pszCheck = "Invalid jmp_buf"; break; 639 case 0x19: pszCheck = "Modifying read-only data"; break; 640 case 0x20: pszCheck = "Crypto self-test fail"; break; 641 case 0x21: pszCheck = "Invalid exception chain"; break; 642 case 0x22: pszCheck = "Crypto library error"; break; 643 /** @todo there are lots more... */ 627 and !analyze -show differs on the following. Looks like a decimal/hex mixup. 628 Using the web info, hoping it is more accurate (matches 0x1d better)... */ 629 case 0x0a: pszCheck = "Invalid indirect control transfer (call guard)"; break; 630 case 0x0b: pszCheck = "Invalid memory write (write guard)"; break; 631 case 0x0c: pszCheck = "Invalid context for fiber switch"; break; 632 case 0x0d: pszCheck = "Invalid register context (in assignment)"; break; 633 case 0x0e: pszCheck = "Invalid object reference count"; break; 634 635 case 0x0f: pszCheck = "Memory safety violation [?]"; break; /* windbg; undocument on learn.microsoft.com */ 636 case 0x10: pszCheck = "Invalid indirect call (call guard) [?]"; break; /* ditto */ 637 case 0x11: pszCheck = "Invalid memory write (write guard) [?]"; break; /* ditto */ 638 639 case 0x12: pszCheck = "Invalid jmp_buf;"; break; 640 case 0x13: pszCheck = "Modifying read-only data"; break; 641 case 0x14: pszCheck = "Crypto self-test fail"; break; 642 case 0x15: pszCheck = "Invalid exception chain"; break; 643 case 0x16: pszCheck = "Crypto library error"; break; 644 case 0x17: pszCheck = "Invalid call from within DllMain"; break; /* sounds very userlandish... */ 645 case 0x18: pszCheck = "Invalid image base address"; break; 646 case 0x19: pszCheck = "Problem protecting delay load import."; break; 647 case 0x1a: pszCheck = "Call to unsafe extension"; break; 648 case 0x1b: pszCheck = "Deprecated service call"; break; 649 case 0x1c: pszCheck = "Out of bounce buffer access"; break; 650 case 0x1d: pszCheck = "Corrupt RTL_BALANCED_NODE (often heap related)"; break; 651 652 case 0x23: pszCheck = "RtlpHpAllocWithExceptionProtection/RtlpHpFreeWithExceptionProtection problem"; break; /* disas */ 653 654 case 0x25: pszCheck = "Out of bound jump table (switch) attempt"; break; 655 case 0x26: pszCheck = "Bogus longjmp target"; break; 656 case 0x27: pszCheck = "Invalid call target (export suppressed; RtlUnwindEx,RtlDispatchException)"; break; 657 658 case 0x32: pszCheck = "RtlpHpFixedVsFree problem"; break; /* disas */ 659 644 660 default: pszCheck = "Todo/Unknown"; break; 645 661 } … … 653 669 } 654 670 655 case 0x0000013a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_MODE_HEAP_CORRUPTION\n"); break; 671 case 0x0000013a: 672 { 673 const char *pszCheck; 674 switch (uP1) 675 { 676 case 0x03: pszCheck = "a corrupt entry header"; break; 677 case 0x04: pszCheck = "multiple corrupt entry headers"; break; 678 case 0x05: pszCheck = "a corrupt entry header for a large allocation"; break; 679 case 0x06: pszCheck = "buffer overrun (possibly)"; break; 680 case 0x07: pszCheck = "buffer underrun (possibly)"; break; 681 case 0x08: pszCheck = "block is not busy - it is free"; break; /* same as 0xf? */ 682 case 0x09: pszCheck = "invalid argument"; break; 683 case 0x0a: pszCheck = "invalid allocation type"; break; 684 case 0x0b: pszCheck = "use after free (possibly)"; break; 685 case 0x0c: pszCheck = "wrong heap given"; break; 686 case 0x0d: pszCheck = "free list corruption"; break; 687 case 0x0e: pszCheck = "non-free list corruption"; break; 688 case 0x0f: pszCheck = "block is not busy - it is free"; break; /* same as 0x8? */ 689 case 0x10: pszCheck = "bogus state due to buffer overrun (possibly)"; break; 690 case 0x11: pszCheck = "bogus state due to buffer overrun (possibly)"; break; 691 case 0x12: pszCheck = "bogus state due to buffer overrun (possibly)"; break; 692 case 0x13: pszCheck = "NULL heap handle"; break; 693 case 0x14: pszCheck = "request too big"; break; 694 case 0x15: pszCheck = "commit limit exceeded"; break; 695 case 0x16: pszCheck = "invalid VA manage query size/whatever"; break; 696 } 697 698 cchUsed = RTStrPrintf(pszDetails, cbDetails, 699 "KERNEL_MODE_HEAP_CORRUPTION\n" 700 "P1: %016RX64 - %s!\n" 701 "P2: %016RX64 - Heap address\n" 702 "P3: %016RX64 - Corruption address\n" 703 "P4: %016RX64 - reserved\n", uP1, pszCheck, uP2, uP3, uP4); 704 break; 705 } 656 706 case 0x0000013b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PASSIVE_INTERRUPT_ERROR\n"); break; 657 707 case 0x0000013c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_IO_BOOST_STATE\n"); break;
Note:
See TracChangeset
for help on using the changeset viewer.