2012-02-23 17 views
1

幾個月前我寫過一篇關於我一直在與之鬥爭的問題。 這裏是鏈接:用D7編寫的Windows服務無法在WinServer2008 64位下運行後重啓

0x0eedfade kernelbase.dll faulting module in d7 windows service

一般的問題是,寫在D7首次在Windows服務啓動OK和完美的作品,但在的時候,我不得不重新啓動它(例如,在幾天後) , 我做不到。

今天我已經包含madexcept的可執行文件和我在啓動過程中有:

compiled with  : Delphi 7 
madExcept version : 3.0l 
callstack crc  : $dbabc0aa, $f5cfd533, $f5cfd533 
exception number : 1 
exception class : EOutOfResources 
exception message : Error creating window class. 

main thread ($c88): 
004a7419 +09d ServiceTest.exe Forms     6322 +20 TApplication.CreateHandle 
004a7206 +1a6 ServiceTest.exe Forms     6250 +32 TApplication.Create 
00493fc3 +10b ServiceTest.exe Controls    10924 +10 InitControls 
0049411b +02f ServiceTest.exe Controls    10943 +2 initialization 
004048c0 +044 ServiceTest.exe System       InitUnits 
00404926 +03a ServiceTest.exe System       @StartExe 
00407392 +03a ServiceTest.exe SysInit       @InitExe 
004ed991 +011 ServiceTest.exe ServiceTest 62 +0 initialization 
75f13675 +010 kernel32.dll            

嘛,據我記得它甚至沒有去開始項目文件結尾部分。 我只是好奇是否系統資源不足,但: 系統句柄也處於良好的水平,內存也是如此。

任何建議我還能做什麼?

每次出現此錯誤並且無法重新啓動應用程序時,我無法重新啓動生產服務器。

+0

難道是你有內存泄漏?我沒有使用過makexcept,但我認爲它會記錄錯誤,所以在這種情況下,Windows會爲沒有可用的資源提供給您的服務而感到瘋狂......另外,請檢查其他應用程序/服務使用的資源太多 – ComputerSaysNo 2012-02-23 12:00:33

+0

@DininDuminica是的,它聽起來像泄漏是問題。 madExcept不報告內存或資源泄漏,但內存管理器c /應該。但是,泄漏並不是泄漏(當然不能被認爲是泄漏),直到流程退出並且服務的重新啓動不會終止其運行的流程。因此,需要仔細手動檢查接口(ref count)對象實例的所有構造函數和析構函數和/或循環引用。 – 2012-02-23 13:40:23

+0

什麼是有趣的,當我從服務控制檯運​​行服務,然後我得到的錯誤,當我作爲一個獨立的應用程序運行,錯誤不會引發... – user740144 2012-02-23 13:40:40

回答

2

我認爲你的應用程序/服務中存在資源泄漏。

您需要檢查窗口桌面堆,繼承人一個ms知識庫文章Out of Memory" error message appears when you have a large number of programs running

我們已經看到非常類似的問題,服務沒有運行或表現非常奇怪(像套接字變得聾),並追蹤到DesktopHeap變得充滿,它作爲應用程序運行時工作的原因是桌面堆應用程序比用於服務的應用程序要大得多。這個鏈接Desktop Heap Overview解釋了它的用途。

DHeapMon是一個應用程序,您可以使用它監視桌面堆並確定是否泄漏(或只是使用)太多的資源。

您需要確保您的服務儘可能少使用TForms(最好不要)。

您可以在註冊表中更改服務桌面堆的大小,這些鏈接將解釋如何使用此功能來幫助查找問題(通常會減少此問題以更快地強制錯誤),或者如果您使用的是批量更改的服務。

希望這會有所幫助。

+0

謝謝我會試試看,目前我被困在dheapmon安裝,它給了我124錯誤,我試圖解決問題.. – user740144 2012-02-23 14:44:38

+0

不幸的是幾個小時後,我仍然無法安裝顯示器。我按照說明將符號下載到一個新的目錄中。我總是得到124錯誤,不能做任何事......在安裝過程中你沒有這樣的錯誤嗎? – user740144 2012-02-24 09:21:09

+0

我們安裝DHeapMon的唯一問題是它正在安裝的機器需要訪問互聯網以下載符號文件,我們無法使用我們已經下載的一個。 – Dampsquid 2012-02-24 10:15:42

相關問題