mpurses / Sonder

Rainmeter skin
https://www.deviantart.com/michaelpurses/art/Sonder-Rainmeter-skin-838147223
253 stars 12 forks source link

Fails when screen off - Backlight.DLL failure #44

Open osamz opened 2 years ago

osamz commented 2 years ago

Hi, from many months ago I saw that Rainmeter fails suddenly when my screen off (or randomly sometimes), when time-out only, not happen when I power off it manually by button. I use Desktop Acer Monitor, with GTX 1050Ti

This is an fault in Backlight.DLL as I understand from Event Viewer.

Version

Rainmeter 4.5.12.3616 (64-bit)
Language: Arabic (1025)
Build time: 2022-03-02  7:13:16
Windows 10 Home 2009 64-bit (build 19044) - English (1033)
Path: C:\Program Files\Rainmeter\
SkinPath: C:\Users\abo-a\Documents\Rainmeter\Skins\
SettingsPath: C:\Users\abo-a\AppData\Roaming\Rainmeter\
IniFile: C:\Users\abo-a\AppData\Roaming\Rainmeter\Rainmeter.ini

Event Viewer 1st Log

Log Name:      Application
Source:        Application Error
Date:          15/05/2022 AM 06:31:21
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      DESKTOP-I4BESZL
Description:
Faulting application name: Rainmeter.exe, version: 4.5.12.3616, time stamp: 0x621f5fb2
Faulting module name: Backlight.DLL, version: 0.9.3.0, time stamp: 0x5406dc3e
Exception code: 0xc0000094
Fault offset: 0x0000000000002779
Faulting process id: 0x3640
Faulting application start time: 0x01d8680a4bc6ec06
Faulting application path: C:\Program Files\Rainmeter\Rainmeter.exe
Faulting module path: C:\Users\abo-a\AppData\Roaming\Rainmeter\Plugins\Backlight.DLL
Report Id: 9a04f90c-88b8-4b6a-8ecb-942b07301eec
Faulting package full name: 
Faulting package-relative application ID: 

Event Xml:

<Event
    xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    <System>
        <Provider Name="Application Error" />
        <EventID Qualifiers="0">1000</EventID>
        <Version>0</Version>
        <Level>2</Level>
        <Task>100</Task>
        <Opcode>0</Opcode>
        <Keywords>0x80000000000000</Keywords>
        <TimeCreated SystemTime="2022-05-15T03:31:21.9627499Z" />
        <EventRecordID>137719</EventRecordID>
        <Correlation />
        <Execution ProcessID="0" ThreadID="0" />
        <Channel>Application</Channel>
        <Computer>DESKTOP-I4BESZL</Computer>
        <Security />
    </System>
    <EventData>
        <Data>Rainmeter.exe</Data>
        <Data>4.5.12.3616</Data>
        <Data>621f5fb2</Data>
        <Data>Backlight.DLL</Data>
        <Data>0.9.3.0</Data>
        <Data>5406dc3e</Data>
        <Data>c0000094</Data>
        <Data>0000000000002779</Data>
        <Data>3640</Data>
        <Data>01d8680a4bc6ec06</Data>
        <Data>C:\Program Files\Rainmeter\Rainmeter.exe</Data>
        <Data>C:\Users\abo-a\AppData\Roaming\Rainmeter\Plugins\Backlight.DLL</Data>
        <Data>9a04f90c-88b8-4b6a-8ecb-942b07301eec</Data>
        <Data></Data>
        <Data></Data>
    </EventData>
</Event>

Event Viewer 2nd Log

Log Name: Application
Source: .NET Runtime
Date: 05/15/2022 AM 06:31:21
Event ID: 1026
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: DESKTOP-I3DFSFI
Description:
Application: Rainmeter.exe
Framework version: v4.0.30319
Description: The process terminated due to an unhandled exception.
Exception information: exception code c0000094 and exception address 00007FFF9D902779
Stack Structure:

Event Xml:

<Event
    xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    <System>
        <Provider Name=".NET Runtime" />
        <EventID Qualifiers="0">1026</EventID>
        <Version>0</Version>
        <Level>2</Level>
        <Task>0</Task>
        <Opcode>0</Opcode>
        <Keywords>0x80000000000000</Keywords>
        <TimeCreated SystemTime="2022-05-15T03:31:21.8057359Z" />
        <EventRecordID>137718</EventRecordID>
        <Correlation />
        <Execution ProcessID="0" ThreadID="0" />
        <Channel>Application</Channel>
        <Computer>DESKTOP-I3DFSFI</Computer>
        <Security />
    </System>
    <EventData>
        <Data>Application: Rainmeter.exe
Framework version: v4.0.30319
Description: The process terminated due to an unhandled exception.
Exception information: exception code c0000094 and exception address 00007FFF9D902779
Stack Structure:
        </Data>
    </EventData>
</Event>

Finally, these some lines which may indicate problem source, from Rainmeter log

NOTE (16:17:37.960) Sonder\System\Brightness\Brightness.ini: Refreshing skin
DBUG (16:17:37.960) Sonder\System\Brightness\Brightness.ini: Reading file: C:\Users\abo-a\Documents\Rainmeter\Skins\Sonder\System\Brightness\Brightness.ini
DBUG (16:17:37.962) Sonder\System\Brightness\Brightness.ini: Reading file: C:\Users\abo-a\Documents\Rainmeter\Skins\Sonder\@Resources\Variables.inc
DBUG (16:17:37.965) Sonder\System\Brightness\Brightness.ini: Reading file: C:\Users\abo-a\Documents\Rainmeter\Skins\Sonder\@Resources\Language\Skin\ar-SA.inc
DBUG (16:17:37.972) : Reading file: C:\Users\abo-a\AppData\Roaming\Rainmeter\Rainmeter.ini
NOTE (16:17:37.978) : Backlight.dll: Fail to control Laptop LCD
NOTE (16:17:37.979) : Backlight.dll: List of all monitors:
NOTE (16:17:37.980) : Monitor1 : Generic PnP Monitor 
NOTE (16:17:37.981) : Backlight.dll: List of monitor in control:
NOTE (16:17:38.039) : Monitor1 : Brightness : Max 100, Min 0, Current 18 

Note: rainmeter log file is not saved when it crashed, so every time I run Rainmeter, log file starts-over.

I hope this can be fixed.

osamz commented 2 years ago

5 This may be related.

XBachs commented 1 year ago

I also faced this issue but managed to fix this error by editing the skin file so that the skin only update by User input Here is my edited Brightness_Small.ini: (remember to change the file extension though Brightness_Small.txt

osamz commented 1 year ago

I also faced this issue but managed to fix this error by editing the skin file so that the skin only update by User input Here is my edited Brightness_Small.ini: (remember to change the file extension though Brightness_Small.txt

I add it, I will try & write a feedback.

osamz commented 1 year ago

@XBachs It's now works great, but I want to apply same thing on other variation, can you explain to me what you did?

XBachs commented 1 year ago

The Rainmeter crash because the brightness skin update in event when screen turn on or when you using your desktop Monitor's UI ( to change monitor setting via physical monitor's button or similar). So, the easy solution is edit the skin so that it won't update when mentioned event occur.

Firstly change UpdateDivider setting so that the skin won't auto update

in [Rainmeter] measure, add or change value;

DefaultUpdateDivider=-1

in [MeasureBrightness] measure, add or change value:

UpdateDivider=-1

Secondly change Mouse scroll action in [Round] measure so that the skin will update on Mouse scroll

in [Round] measue, replace your original lines with my below edited lines:

MouseScrollUpAction=[!CommandMeasure MeasureBrightness "ChangeBacklight +#BrightnessScrollIncrement#"][!UpdateMeasure MeasureBrightness][!UpdateMeter "Round"][!Redraw] MouseScrollDownAction=[!CommandMeasure MeasureBrightness "ChangeBacklight -#BrightnessScrollIncrement#"][!UpdateMeasure MeasureBrightness][!UpdateMeter "Round"][!Redraw]

the change in my edited lines are :

replace original [!Update] with [!UpdateMeasure MeasureBrightness]

you can read the difference between those two in Rainmeter manual in their website