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

SYSTEM hive still can be randomly corrupted, it becomes not loadable by FreeLdr anymore

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • None
    • None
    • ReactOS 0.4.15-dev-8565-gcca9acf in VirtualBox 7.0.15.

    Description

      Tested with 0.4.15-dev-8565-gcca9acf with some unrelated changes applied (but I did not make any changes in CM). However I very doubt the situation could change in the latest 0.4.16-dev master.

      After intensive usage of the system and multiple reboots (~ 30 - 40 during the last days), sometimes with bugcheck at booting/loading the Desktop, one or more registry hives became corrupted, so it is/they are not loadable by the Loader anymore and therefore OS becomes unbootable and needs reinstall, despite we state it can no longer corrupt like this, after CORE-6762 was fixed.

      Before this occurred, I did not do anything unusual: just replaced some dlls from XP/2003 (umpnpmgr.dll) for testing purposes and added one value in a registry key of one service (umpnpmgr\Parameters\ServiceMain with Windows 2000/XP/2003 compatible value ServiceEntry/SvcEntry_PlugPlay, for MS umpnpmgr.dll testing). There were no any unusual factors those could lead to the corruption.

      Just my guessing: maybe it's not a problem of the kernel anymore, but is a problem of registry hives (and therefore registry generation mechanism) instead? Then it could be related to CORE-13347, but that was already fixed too.

      Screenshot and log are attached as well.
      What the log says when "Importing binary hive failed" message is displayed:

      (/srv/buildbot/worker_data/Build_GCCLin_x86/build/boot/freeldr/freeldr/ntldr/registry.c:137) err: CmCheckRegistry detected problems with the loaded flat hive (check code 16)
      (/srv/buildbot/worker_data/Build_GCCLin_x86/build/boot/freeldr/freeldr/ntldr/registry.c:497) err: Corrupted hive (despite recovery) 04FDC000
      (sdk/lib/cmlib/cmheal.c:710) Self healing not possible
      (sdk/lib/cmlib/cmcheck.c:458) The key value signature is invalid
      (sdk/lib/cmlib/cmcheck.c:572) One of the values is corrupt and couldn't be repaired
      (sdk/lib/cmlib/cmheal.c:777) Self healing not possible
      (sdk/lib/cmlib/cmcheck.c:1068) Failed to repair the hive, the value list is corrupt
      (sdk/lib/cmlib/cmheal.c:430) Self healing not possible
      (sdk/lib/cmlib/cmcheck.c:1252) The key is corrupt (current cell 197184, parent cell 32)
      (sdk/lib/cmlib/cmcheck.c:1711) The hive is not valid (hive 0x01056C6C, check status code 31)
      (/srv/buildbot/worker_data/Build_GCCLin_x86/build/boot/freeldr/freeldr/ntldr/registry.c:137) err: CmCheckRegistry detected problems with the loaded flat hive (check code 31)
      (sdk/lib/cmlib/cmcheck.c:984) The cell size is above the threshold size (size 4294845836)
      (sdk/lib/cmlib/cmcheck.c:1239) THE ROOT CELL IS BROKEN
      (sdk/lib/cmlib/cmcheck.c:1711) The hive is not valid (hive 0x01056C6C, check status code 16)
      (/srv/buildbot/worker_data/Build_GCCLin_x86/build/boot/freeldr/freeldr/ntldr/registry.c:137) err: CmCheckRegistry detected problems with the loaded flat hive (check code 16)
      (/srv/buildbot/worker_data/Build_GCCLin_x86/build/boot/freeldr/freeldr/ntldr/registry.c:497) err: Corrupted hive (despite recovery) 05664000
      (sdk/lib/cmlib/cmheal.c:710) Self healing not possible
      (sdk/lib/cmlib/cmcheck.c:458) The key value signature is invalid
      (sdk/lib/cmlib/cmcheck.c:572) One of the values is corrupt and couldn't be repaired
      (sdk/lib/cmlib/cmheal.c:777) Self healing not possible
      (sdk/lib/cmlib/cmcheck.c:1068) Failed to repair the hive, the value list is corrupt
      (sdk/lib/cmlib/cmheal.c:430) Self healing not possible
      (sdk/lib/cmlib/cmcheck.c:1252) The key is corrupt (current cell 197184, parent cell 32)
      (sdk/lib/cmlib/cmcheck.c:1711) The hive is not valid (hive 0x01056C6C, check status code 31)
      (/srv/buildbot/worker_data/Build_GCCLin_x86/build/boot/freeldr/freeldr/ntldr/registry.c:137) err: CmCheckRegistry detected problems with the loaded flat hive (check code 31)
      (sdk/lib/cmlib/cmcheck.c:984) The cell size is above the threshold size (size 4294845836)
      (sdk/lib/cmlib/cmcheck.c:1239) THE ROOT CELL IS BROKEN
      (sdk/lib/cmlib/cmcheck.c:1711) The hive is not valid (hive 0x01056C6C, check status code 16)
      (/srv/buildbot/worker_data/Build_GCCLin_x86/build/boot/freeldr/freeldr/ntldr/registry.c:137) err: CmCheckRegistry detected problems with the loaded flat hive (check code 16)
      (/srv/buildbot/worker_data/Build_GCCLin_x86/build/boot/freeldr/freeldr/ntldr/registry.c:497) err: Corrupted hive (despite recovery) 05CEC000 

      Attachments

        1. debug.log
          1.34 MB
          Oleg Dubinskiy
        2. hive-error.png
          2 kB
          Oleg Dubinskiy
        3. Stuff_That_You_May_Want_To_Have_In_Your_Rosbe_BIN_directory.7z
          76 kB
          reactosfanboy

        Issue Links

          Activity

            People

              Unassigned Unassigned
              Oleg Dubinskij Oleg Dubinskiy
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: