Uploaded image for project: 'Core ReactOS'
  1. Core ReactOS
  2. CORE-18825

[x64] VBox Graphical Driver after reboot goes BSOD 0x50

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • Win32SS
    • VirtualBox VM - Versión 7.2.97 r172715 (Qt6.8.0 on windows)
      RAM: 2048MB
      VHD: 10,50GB
      Audio: Yes
      Video: 128MB (vboxvga)

    Description

      ReactOS ver firstly reported: reactos-bootcd-0.4.15-dev-5672-gf73ac17
      Arch: 64 bits only
      ReactOS version that is now in debugging: reactos-bootcd-0.4.17-dev-581-g16bb138-x64
      Environment: Virtual Machine - Versión 7.2.97 r172715 (Qt6.8.0 on windows)
      Driver: VBoxAdditions--Amd64-Video-PDBandDrivers.7z

      Description: I tried to install the drivers manually but I have got a BSOD 0x50. It should work as does in Windows XP 64 bits or w2003 x64 bits.

      Steps to reproduce:
      1. Attach the guest addition iso image to the CD/DVD reader of the VBox VM.
      2. Using 7z, decompress the file VBoxWindowsAdditions-amd64.exe
      3. Use the device manager to install a graphical driver for the screen, into display adapters.
      4. It'll be succesfully installed. Reboot normally,
      5. The computer loads a second the desktop, and latelly, will be freezed because BSOD 0x50.

      What should it do?
      Setup the video driver, apparently not having the command for fitting the window (because it needs a different setup), but yes the the different screen resolutions.

      Screenshot: VirtualBox_ReactOS x64_07_02_2023_21_13_04.png

      Debug log: MSVC-ReactOS-VBox-Amd64-Bug.log

      August 5th, 2026 update:
      I finally achieved to compile the vbox video drivers (being retro compatible is a nightmare for all the projects and toke a while to find every single dependency). Now we can see that it's hanging in VBoxDisplay.dll, but in VBoxDispMouse.cpp code

       
          /* truncate masks if we exceed size supported by miniport */
          pAttrs->Width = min(srcMaskW, pDev->pointer.caps.MaxWidth);
          pAttrs->Height = min(srcMaskH, pDev->pointer.caps.MaxHeight);
          pAttrs->WidthInBytes = pAttrs->Width * 4;
       
          if (fl & SPS_ALPHA)
          {
              LOG(("SPS_ALPHA"));
              /* Construct AND mask from alpha color channel */
              pSrc = (PBYTE) psoColor->pvScan0;
              pDst = pAttrs->Pixels;
              dstBytesPerLine = (pAttrs->Width+7)/8;
       
              memset(pDst, 0xFF, dstBytesPerLine*pAttrs->Height);
       
              for (y=0; y<pAttrs->Height; ++y)
              {
                  for (x=0, bit=7; x<pAttrs->Width; ++x, --bit)
                  {
                      if (0xFF==bit) bit=7;
       
                      if (pSrc[(LONG)y*psoColor->lDelta + x*4 + 3] > 0x7F)
                      {
                          pDst[y*dstBytesPerLine + x/8] &= ~RT_BIT(bit);
                      }
                  }
              }
      

      I suspect that this is a Win32k bug, isn't it? Maybe I am wrong.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              julenuri julenuri
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: