不能顯示該小工具。
不能顯示該小工具。
取消
顯示結果 
搜尋替代 
您的意思是: 

ASUS X670E HERO Armoury Crate 問題 與 自製 ASUS 軟體清除工具解決方案

kwyshell
Star II

升級新主機板 ASUS X670E HERO 後,安裝 Armoury Crate 遇上一堆問題。
搞了好久,最後自己寫了工具來清理 ASUS 所有軟體。

詳細內如請閱讀: 自製 ASUS 軟體清除工具分享  

用了我的工具後,可以順利安裝  Armoury Crate。但是有個問題我自己沒法修復:

C:\Program Files\ASUS\ARMOURY CRATE Lite Service\MB_Home\MB_Home.dll
這個模組不斷的產生錯誤。

失敗的應用程式名稱: ArmouryCrate.Service.exe,版本: 5.4.4.0,時間戳記: 0x63ea1c60
失敗的模組名稱: MB_Home.dll,版本: 5.4.8.0,時間戳記: 0x63a41bd5
例外狀況代碼: 0xc0000409
錯誤位移: 0x00000000000403a9
失敗的處理程序識別碼: 0x0xB514
失敗的應用程式開始時間: 0x0x1D96C2BC05CFE1F
失敗的應用程式路徑: C:\Program Files\ASUS\ARMOURY CRATE Lite Service\ArmouryCrate.Service.exe
失敗的模組路徑: C:\Program Files\ASUS\ARMOURY CRATE Lite Service\MB_Home\MB_Home.dll

用WinDbg跑了一下,0xc0000409 ("堆疊緩衝區溢出")
這個DLL在我的系統產生了 stack overflow。我自己沒法除錯。因此只能求助官方支持。
這個顯然是軟體設計上的錯誤,產生了沒預期的軟體設計狀況。
建議是不是用 SEH (Structured Exception Handling) 或是 改善設計軟體設計來避免產生錯誤。
目前我只能暫時把改模組移除來避免  ArmouryCrate.Service.exe 服務崩潰。

16則回覆 16

kwyshell
Star II

BIOS: ROG CROSSHAIR X670E HERO BIOS 1004
BIOS 設定多數都是預設值。 RAM 頻率設定過 DEFAULT 3600 或是 目前的5000 但不影響結果。
BIOS 設定多數都是預設值: Tool 中,Armoury Crate  與 MyASUS 目前都是預設關閉 (避免APP STORE安裝)

Armoury Crate  由官方下載的。主機板的支援PAGE。也用過多次
Armoury Crate Uninstall Tool 目前特別效果。

等等會測試看看 昨天新推出的看看沒否改善:
Armoury Crate & Aura Creator Installer 版本 3.2.6.

 

kwyshell
Star II

測試了 Armoury Crate & Aura Creator Installer 版本 3.2.6. (先執行 Armoury Crate Uninstall Tool  清除後安裝)
結果非常糟糕。沒想到原本ARGB周邊能工作,龍神的 AniMeMatrix  也沒問題的。用了新版的完全不能工作了。而且只剩下主機板上的ARGB能夠被偵測到。

更嚴重的是用了新版的 Armoury Crate & Aura Creator Installer  後,
Armoury Crate Uninstall Tool V2.1.11.0 變得無法正常執行了。執行到一半,就要擋掉。(測試了好多回都是如此)

EventViewer Log,

失敗的應用程式名稱: Armoury Crate Uninstall Tool.exe,版本: 2.1.11.0,時間戳記: 0xac0e1d94
失敗的模組名稱: ServiceUninstall.dll,版本: 2.1.11.0,時間戳記: 0x63a3d3d0。

現在最尷尬的地方是好多反安裝到一半的程式殘留。想要再重新安裝也無法正常進行。
最後。我只好改寫我的清除工具來取代 Armoury Crate Uninstall Tool 

ASUS Software Clean Up Tool (github.com)

反安裝以下程式:

ASUS AIOFanSDK
ASUS AURA DRAM Component
AURA lighting effect add-on
ASUS ROG FAN XPERT 4
ASUS Framework
ASUS MB Resource
ASUS AIO FAN
ASUS AURA Extension Card HAL
ASUS Armoury Main SDK
GameSDK Service
ROG RYUO III
ASUS Motherboard
AI Suite 3
AniMe Matrix MB EN
AniMe Matrix Font
ASUS Smart Input Service
ASUS AURA Extension Card HAL
ROG Live Service
AniMe Matrix MB EN
ASUS AURA Motherboard HAL
ROGFontInstaller
AURA DRAM Component
AURA lighting effect add-on x64
ASUS Aura SDK
ASUS AIOFan HAL
ARMOURY CRATE Lite Service
 
清除以下服務:
ArmouryCrateControlInterface
ASUSLinkNear
ASUSLinkRemote
ASUSLinkNearExt
ASUSSoftwareManager
ASUSSystemAnalysis
ASUSSystemDiagnosis
AsusROGLSLService
AsusAppService
ASUSSoftwareManager
asus
asusm
GameSDK Service
AsusFanControlService
 
清除以下工作 (把華碩目錄的排程工作全刪除)
/ASUS/*
 
清除Armoury Crate 主程式:
Armoury Crate UWP App Remove

最後,清除所有華碩的機碼與目錄
===========================================================

最後我在執行前一版的
ArmouryCrateInstaller_3.2.5.2
一切又能安裝了。但是原本回報的問題也還在。但是ARGB與AniMeMatrix 又再度能工作了。
這個MB_Home還是會Crash。
C:\Program Files\ASUS\ARMOURY CRATE Lite Service\MB_Home\MB_Home.dll
更新後 Armoury Crate UWP後:
ArmouryCrate.Service.exe,的檔案版本依然是: 5.4.4.0

我感覺我在除錯上花了我太多時間了。

Jiaszzz_ASUS
Moderator
Moderator

@kwyshell 您好,感謝您提供相關資訊,

另外小編已發送私訊給您,請您協助點選右上角至私人訊息處查看,感謝您。

你好,數日未收到您的回信。我自己做了一些研究。來找出問題。
以下是我用 Debugger 跑出來的結果。(已經私訊)

[32] Device class: HDD, Name: HDD 26 Sensors: 3
>>> cpu: 0x0, type: 0x0, class: 0xE, id: 0x0
>>> 6, 0, 84.759087
>>> cpu: 0x0, type: 0x0, class: 0x10, id: 0x0
>>> 6, 3, 0.006250
Exception thrown at 0x00007FFC3BF1C11F (MB_Home.dll) in ArmouryCrate.Service.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.

Unhandled exception at 0x00007FFC3BF503A9 (MB_Home.dll) in ArmouryCrate.Service.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.

Unhandled exception at 0x00007FFC3BF503A9 (MB_Home.dll) in ArmouryCrate.Service.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.

Unhandled exception at 0x00007FFC3BF503A9 (MB_Home.dll) in ArmouryCrate.Service.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.

STATUS_STACK_BUFFER_OVERRUN encountered
A breakpoint instruction (__debugbreak() statement or a similar call) was executed in ArmouryCrate.Service.exe.

Exception thrown at 0x00007FFDAF89BE19 (ntdll.dll) in ArmouryCrate.Service.exe: 0xC0000374: 堆積已損毀。 (parameters: 0x00007FFDAF911860).
Unhandled exception at 0x00007FFDAF89BE19 (ntdll.dll) in ArmouryCrate.Service.exe: 0xC0000374: 堆積已損毀。 (parameters: 0x00007FFDAF911860).

=============================================================================================
ArmouryCrate.Service.exe 在列舉硬體的第32個之後,就會發生Stack Overrun的錯誤。
這個原因依該是列舉的裝置數量超出自己能存放的空間,最終導致程式崩潰。
=============================================================================================
要修正這個問題,必須補上列舉的上限限制。
這個原因是在於程式設計考慮不知周詳與設計上每有仔細UnitTest或是壓力測試每個Function造成。

kwyshell
Star II

您好,
數日以來都未能獲得回應。我自行跑了DEBUGGER來協助釐清問題。
ArmouryCrate.Service.exe 是基於 vcruntime140_1.dll 開發的 Native 與 DOTNET Managed Code 混和模式
C:\Program Files\ASUS\ARMOURY CRATE Lite Service\vcruntime140_1.dll'.

Exception thrown at 0x00007FFDACCFFDEC (KernelBase.dll) in ArmouryCrate.Service.exe: 0x00000005: 存取被拒。.
'ArmouryCrate.Service.exe' (Win32): Loaded 'C:\Program Files\ASUS\ARMOURY CRATE Lite Service\MB_Home\OPHWInfo.dll'.
'ArmouryCrate.Service.exe' (Win32): Unloaded 'C:\Program Files\ASUS\ARMOURY CRATE Lite Service\MB_Home\OPHWInfo.dll'
The thread 0x106e0 has exited with code 0 (0x0).
Exception thrown at 0x00007FFDACCFFDEC in ArmouryCrate.Service.exe: Microsoft C++ exception: EEFileLoadException at memory location 0x000000A32E0FBEF0.
Exception thrown at 0x00007FFDACCFFDEC in ArmouryCrate.Service.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FFDACCFFDEC in ArmouryCrate.Service.exe: Microsoft C++ exception: EEFileLoadException at memory location 0x000000A32E0FBEF0.
'ArmouryCrate.Service.exe' (Win32): Loaded 'C:\Program Files\ASUS\ARMOURY CRATE Lite Service\ScenarioProfilePlugin\ConfigXML_ScenarioProfile.dll'.

[0] Device class: Mainboard, Name: ASUSTeK COMPUTER INC. ROG CROSSHAIR X670E HERO Sensors: 1
>>> cpu: 0x0, type: 0x7, class: 0xE, id: 0x0
>>> 0, 0, 44.000000
[1] Device class: Processor, Name: AMD Ryzen 9 7950X Sensors: 89
>>> cpu: 0x0, type: 0xF, class: 0x1, id: 0x0
....
[32] Device class: HDD, Name: HDD 26 Sensors: 3
>>> cpu: 0x0, type: 0x0, class: 0xE, id: 0x0
>>> 6, 0, 84.759087
>>> cpu: 0x0, type: 0x0, class: 0x10, id: 0x0
>>> 6, 3, 0.006250

Exception thrown at 0x00007FFC3BF1C11F (MB_Home.dll) in ArmouryCrate.Service.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.

Unhandled exception at 0x00007FFC3BF503A9 (MB_Home.dll) in ArmouryCrate.Service.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.

貴公司的服務每次在 MB_Home.dll 列舉硬體最後都會引發 stack overrun
如果我選擇在debugger中繞過這個堆疊過載,則會引發別的錯誤。

STATUS_STACK_BUFFER_OVERRUN encountered
A breakpoint instruction (__debugbreak() statement or a similar call) was executed in ArmouryCrate.Service.exe.

Exception thrown at 0x00007FFDAF89BE19 (ntdll.dll) in ArmouryCrate.Service.exe: 0xC0000374: 堆積已損毀。 (parameters: 0x00007FFDAF911860).
Unhandled exception at 0x00007FFDAF89BE19 (ntdll.dll) in ArmouryCrate.Service.exe: 0xC0000374: 堆積已損毀。 (parameters: 0x00007FFDAF911860).


總之系統發現程式碼已經無法正常運行,堆疊已經回損。這可能程式碼產生了錯誤。加上貴公司的程式碼是Managed Code與Native Code混和。這些堆疊錯誤行為應該是在Native Code所引發的。而這些錯誤應該是能被避免的。如果在程式碼上可慮更多情況,或是寫作上更嚴謹。避免引數超過宣告的大小,或是給予程式更多嚴厲的壓力測試都能增加程式碼的穩定性。

我已經將詳細LOG私訊息給你們了。希望能獲得回應。
最後,不得不說ARMOURY CRATE功能強大,但是除非他能穩定運作,增加相容性。否則一切都是枉然。不可能老是依賴顧客反饋,或是要求顧客重新安裝系統等等。能夠工作與產出才是購買新設備的初衷,而不是讓一切搞得更困難。