OpenTrading/OTMql4Py

iPyEvalInt("os.getpid()") cause MT4 hang

Opened this issue · 1 comments

In OTPyTestNullEA.mq4

int OnInit(){
    ...
    ...
    iRetval = iPyEvalInt("os.getpid()"); //cause mt4 hang
}

Log file:
2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)]
vPyInit - Opened d:\MT4\MQL4\Python\OTMql427../../Logs/_test_PyTestNullEA.txt d:\MT4\MQL4\Python\OTMql427../../Logs/_test_PyTestNullEA.txt
vPyInit - Thread MainThread number 1556
Exception KeyError: KeyError(3528,) in <module 'threading' from 'C:\Python27\Lib\threading.pyc'> ignored

Work around by not a good solution:

//iRetval = iPyEvalInt("os.getpid()");   
//replace as
iRetval = uPySafeEval("os.getpid()");

Essential information for reporting Issues:

  • Windows Server 2012R2, 64 bit:
  • Metatrader Build: 101
  • Metatrader installed from: d:\mt4 (run as portable mode)
  • Version of Python: 2.7.12
  • Python installed from: c:\python27
  • OTMql4Py from git, or what version of the OTMql4Py installer: (latest)

I'm facing the same issue. After execution of OTPyTestNullEA.mq4 my log shows:

2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)]
vPyInit - Opened C:..\MetaQuotes\Terminal..\MQL4\Python\OTMql427../../Logs/_test_PyTestNullEA.txt C:..\MetaQuotes\Terminal..\Python\OTMql427../../Logs/_test_PyTestNullEA.txt
vPyInit - Thread MainThread number 4876
ERROR:root:5584 - 4876 - <_MainThread(MainThread, stopped 4876)
Traceback (most recent call last):
File "C:\Program Files (x86)\Python27\Lib\threading.py", line 1104, in _exitfunc
self._Thread__delete()
File "C:\Program Files (x86)\Python27\Lib\threading.py", line 894, in __delete
del _active[_get_ident()]
KeyError: 5584

After enhancing exception handling in threading.py it seems to me that the _get_ident() returns the wrong ThreadId. The MainThread id is 4876. The function at this point returns 5584. Refer to stackoverflow this issue could be triggered by monkey pathing.

  • Windows 8, 64 bit
  • Metatrader Build: 1031
  • Python 2.7.12
  • OTMyl4Py by installer