Эксперт-убийца терминала...

 
После перехода на билд 188 от 17.01 возникла проблема - при тестировании эксперта терминал намертво зависал. До апдейта проблемы не было. Стандартные эксперты проходили тестирование без проблем. ..

В общем, после несколькочасовой локализации проблемы имеем:

int init() { return(0); } int deinit() { return(0); } int start() { string c = "DeltaClose = " + DoubleToStr(GetDeltaClose2(), 6); f2(c); return(0); } double GetDeltaClose1() { return(Close[1] - Close[2]); } double GetDeltaClose2(int dShift = 1) { return(Close[dShift] - Close[dShift + 1]); } bool f1(string cOperation) { if (false) { f2("aaa"); } return(true); } bool f2(string cMessage) { if (false) { f1("bbb"); } return(true); }


Компиляция такого эксперта проходит без проблем, но попытка его тестирования приводит к смерти терминала. При этом, если в start() заменить GetDeltaClose2() на GetDeltaClose1(), то вместо зависания имеем

There has been a critical error Time : 2006.01.19 02:31 Program : Client Terminal Version : 4.00 (build: 188, 17 Jan 2006) Owner : MetaQuotes Software Corp. (MetaTrader) OS : Windows XP Professional 5.1 Service Pack 2 (Build 2600) Processors : 1, type 586, level 6 Memory : 261616/84672 kb Exception : C0000005 Address : 004614EE Access Type : write Access Addr : 00000000 Registers : EAX=02490090 CS=001b EIP=004614EE EFLGS=00010217 : EBX=016E62B0 SS=0023 ESP=01E1BC90 EBP=00E33210 : ECX=00000005 DS=0023 ESI=00E8F110 FS=003b : EDX=00000016 ES=0023 EDI=00000000 GS=0000 Stack Trace : 00000000 E5400000 C70C468A 00000000 : 00000000 00000000 00000000 00000000 : 00000000 00000000 00000000 00000000 : 00000000 00000000 00000000 00000000 Modules : 1 : 00400000 00286000 C:\Program Files\MetaTrader 4\terminal.exe 2 : 01B00000 00006000 C:\Program Files\Punto Switcher\correct.dll 3 : 10000000 00005000 C:\WINDOWS\system32\prio.dll 4 : 20000000 002CD000 C:\WINDOWS\system32\xpsp2res.dll 5 : 5B260000 00038000 C:\WINDOWS\system32\UxTheme.dll 6 : 61EC0000 0000E000 C:\WINDOWS\system32\MFC42LOC.DLL 7 : 698B0000 00058000 C:\WINDOWS\system32\hnetcfg.dll 8 : 71A30000 00040000 C:\WINDOWS\system32\mswsock.dll 9 : 71A70000 00008000 C:\WINDOWS\System32\wshtcpip.dll 10 : 71A80000 00008000 C:\WINDOWS\system32\WS2HELP.dll 11 : 71A90000 00017000 C:\WINDOWS\system32\WS2_32.dll 12 : 72CD0000 00008000 C:\WINDOWS\system32\msacm32.drv 13 : 72CE0000 00009000 C:\WINDOWS\system32\wdmaud.drv 14 : 73D90000 000FE000 C:\WINDOWS\system32\MFC42.DLL 15 : 746E0000 0004B000 C:\WINDOWS\system32\MSCTF.dll 16 : 76350000 00005000 C:\WINDOWS\system32\MSIMG32.dll 17 : 76380000 00049000 C:\WINDOWS\system32\comdlg32.dll 18 : 76B20000 0002E000 C:\WINDOWS\system32\WINMM.dll 19 : 76C20000 0002E000 C:\WINDOWS\system32\WINTRUST.dll 20 : 76C80000 00028000 C:\WINDOWS\system32\IMAGEHLP.dll 21 : 77110000 0008C000 C:\WINDOWS\system32\OLEAUT32.dll 22 : 773C0000 00102000 C:\WINDOWS\WinSxS\X86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.dll 23 : 774D0000 0013D000 C:\WINDOWS\system32\ole32.dll 24 : 77A70000 00095000 C:\WINDOWS\system32\CRYPT32.dll 25 : 77B10000 00012000 C:\WINDOWS\system32\MSASN1.dll 26 : 77BC0000 00007000 C:\WINDOWS\system32\midimap.dll 27 : 77BD0000 00015000 C:\WINDOWS\system32\MSACM32.dll 28 : 77C00000 00058000 C:\WINDOWS\system32\msvcrt.dll 29 : 77D30000 00090000 C:\WINDOWS\system32\USER32.dll 30 : 77DC0000 000AC000 C:\WINDOWS\system32\ADVAPI32.dll 31 : 77E70000 00091000 C:\WINDOWS\system32\RPCRT4.dll 32 : 77F10000 00046000 C:\WINDOWS\system32\GDI32.dll 33 : 77F60000 00076000 C:\WINDOWS\system32\SHLWAPI.dll 34 : 7C800000 000F6000 C:\WINDOWS\system32\kernel32.dll 35 : 7C900000 000B1000 C:\WINDOWS\system32\ntdll.dll 36 : 7C9C0000 00818000 C:\WINDOWS\system32\SHELL32.dll Call stack : 0045C5A0:4F4E [004614EE] ?ExecuteRecursive@CExpertInterior


В общем, большой радости мне это все не принесло... Хотелось бы комментариев - может, я где-то ошибаюсь?..
 
Мы выяснили, в чём проблема, и исправили. В ближайшее время выложим обновлённый билд.