Starting LibreOffice freezes windows, requiring a physical power off / on restart. Cause: Graphics / Skia

I decided to write this post because I had a hard time solving this. Perhaps it will be of use for some.

Environment:
● Windows 10/11 X86_64
LibreOffice Versions:
● 7.6 through 26.2.0.3

Issue and further details:
● Starting LibreOffice froze Windows.
● Starting LibreOffice in Safe Mode (soffice.exe --safe-mode) also froze Windows.

Solution:
● Edit “%APPDATA%\LibreOffice\4\user\registrymodifications.xcu
● Make sure the following lines are present or add them before the last line.
○ With the last line containing “</oor:items>

<item oor:path="/org.openoffice.Office.Common/VCL"><prop oor:name="ForceSkia" oor:op="fuse"><value>false</value></prop></item>
<item oor:path="/org.openoffice.Office.Common/VCL"><prop oor:name="ForceSkiaRaster" oor:op="fuse"><value>true</value></prop></item>
<item oor:path="/org.openoffice.Office.Common/VCL"><prop oor:name="UseSkia" oor:op="fuse"><value>false</value></prop></item>

I could stop here.
The issue for me was that I only knew the following entry:
<item oor:path="/org.openoffice.Office.Common/VCL"><prop oor:name="UseSkia" oor:op="fuse"><value>false</value></prop></item>
Which is from
[1] First steps to take before submitting a bug - The Document Foundation Wiki
Setting this entry would still result in Windows freezing.

[1] also mentions
● On Windows, turn “Force Skia software rendering” on
↳ in Tools ▸ Options ▸ LibreOffice ▸ View
● in Tools ▸ Options ▸ LibreOffice ▸ Advanced ▸ Open Expert Configuration
↳ set ForceSkiaRaster to true

But I didn’t know how to set these settings in “registrymodifications.xcu”.
Nor did I know whether it really was a graphics issue.

To ascertain that it was a graphics issue, I used System Internals Sysmon tool to monitor processes related to LibreOffice.
The following two entries where loaded shortly before Windows froze.
● DirectX Graphics Infrastructure
● Vulkan Loader

Which made a graphics issue likely.

So the question is how to enable “Force Skia software rendering” and “ForceSkiaRaster” when starting LibreOffice would freeze Windows (safe mode or not).

Solution (in my case):
● Start Window’s Device Manager (devmgmt.msc)
● Under “Display Adapters”:
○ Right click the graphics card and select “Disable device”.
○ Windows then fell back to some kind of “basic graphics”.

LibreOffice would now run without crashing Windows.
● Set “Force Skia software rendering” and “ForceSkiaRaster” ([1]).
● Enable the display adapter again.


Additional info / footnotes

When disabling the graphics card:
● Close all running applications and save your data!
● Though unlikely, Windows might get wrecked for good.
● Reverting to your CPU’s integrated graphics might also allow starting LibreOffice.

Sysmon config files for monitoring LibreOffice
sysmon_monitor_soffice_xml_config_files.zip (2.7 KB)

Details on the DirectX and Vulcan dll interactions

Image: C:\Program Files\LibreOffice\program\soffice.bin
ImageLoaded: C:\Windows\System32\dxgi.dll
FileVersion: 10.0.19041.5794 (WinBuild.160101.0800)
Description: DirectX Graphics Infrastructure
Product: Microsoft® Windows® Operating System
Company: Microsoft Corporation
OriginalFileName: dxgi.dll
Hashes: SHA256=D33765793E32EFF65F9103EFE2419184AB0B6289E69E69CE85AA7568F678C3B5
Signed: true
Signature: Microsoft Windows
SignatureStatus: Valid

Image: C:\Program Files\LibreOffice\program\soffice.bin
ImageLoaded: C:\Windows\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_0afec3f2050014a0\vulkan-1-x64.dll
FileVersion: 1.3.280.0
Description: Vulkan Loader
Product: Vulkan Runtime
Company: -
OriginalFileName: -
Hashes: SHA256=51186D1392A44A96932EFBDB30238D8FE305C4027A9B7FE6D1FC318966562D58
Signed: true
Signature: LunarG, Inc.
SignatureStatus: Valid

The easier way is to

  1. start LibreOffice in Safe Mode, there is an entry for LibreOffice (Safe mode) in the Start menu
  2. In the dialogue select Configure > start LibreOffice without loading drivers (OpenGL, OpenCL, Vulcan) . I am doing this from memory so maybe not quite the exact wording. Click the button Apply and restart
  3. When LibreOffice opens, click Tools - Options - LibreOffice - View and tick the box Force Skia software rendering. OK and allow to restart

@EarnestAl note this:

You may use an environment variable:

SAL_SKIA=raster
2 Likes

Many thanks for the feedback!

Unfortunately this didn’t work as LibreOffice crashes Windows before the dialogue ever appears.

Cool: Just tested
● Removed the Skia entries in registrymodifications.xcu
● Ascertained that soffice.exe --safe-mode still crashes Windows.
● Opened a command prompt in “soffice.exe”’s directory:
C:\Program Files\LibreOffice\program>
Then:

set SAL_SKIA=raster
soffice.exe --safe-mode

And: Libreoffice starts :partying_face:

I really like this solution, especially because its concise and one does not have to edit registrymodifications.xcu.

Did you also try to rename the user profile folder (user.bak e.g.), and to create a new profile this way on next start of LibO?
You would, of course, lose the settings stored to the registrymodifications.xcu, but you could easly restore templates, user code, … Copying from the old profile.

Yes, I completely purged all remains of LibreOffice.
I.e.:
● Ran the uninstaller
● Deleted whatever remained in c:\Program Files\LibreOffice\
● Deleted AppData\Roaming\LibreOffice\ including AppData\Roaming\LibreOffice\4\user
● Checked the registry for potential “conflict causing entries” (none found).

In fact, that is a recent regression, where we made Windows (and macOS) hard-depend on Skia (previously, we disabled Skia in safe mode on Windows). Now Skia is enabled unconditionally - but we didn’t disable HW acceleration in that case.

https://gerrit.libreoffice.org/c/core/+/198993 is intended to fix that.

1 Like