On 31/05/2013 5:33 AM, Milan Kaše wrote:
I tried to take stack dumps (attached bellow) and it seems that the
first pair of calls is coming from CompileInScriptedSection while the
second pair is from ExecInScriptedSection. Do you have a clue what's
going on here?

Right - script blocks are compiled before they are executed. I really can't remember why the compilation step does this - what problem is it causing you?

Mark

0.00000000*** OnEnterScript ***
0.00142864 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 324, in
_InvokeEx_
0.00142864   return self._invokeex_(dispid, lcid, wFlags, args, kwargs,
serviceProvider)
0.00142864 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 585, in
_invokeex_
0.00142864   return func(*args)
0.00142864 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
610, in SetScriptState
0.00142864   self.Run()
0.00142864 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
788, in Run
0.00142864   self.ExecutePendingScripts()
0.00142864 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
736, in ExecutePendingScripts
0.00142864   self.DoExecutePendingScripts()
0.00142864 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\pyscript.py",
line 237, in DoExecutePendingScripts
0.00142864   if self.CompileInScriptedSection(codeBlock, "exec"):
0.00142864 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
872, in CompileInScriptedSection
0.00142864   self.BeginScriptedSection()
0.00142864 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
972, in BeginScriptedSection
0.00142864   win32api.OutputDebugString("".join(traceback.format_stack()))
0.00574597*** OnLeaveScript ***
0.00618566 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 324, in
_InvokeEx_
0.00618566   return self._invokeex_(dispid, lcid, wFlags, args, kwargs,
serviceProvider)
0.00618566 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 585, in
_invokeex_
0.00618566   return func(*args)
0.00618566 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
610, in SetScriptState
0.00618566   self.Run()
0.00618566 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
788, in Run
0.00618566   self.ExecutePendingScripts()
0.00618566 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
736, in ExecutePendingScripts
0.00618566   self.DoExecutePendingScripts()
0.00618566 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\pyscript.py",
line 237, in DoExecutePendingScripts
0.00618566   if self.CompileInScriptedSection(codeBlock, "exec"):
0.00618566 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
880, in CompileInScriptedSection
0.00618566   self.EndScriptedSection()
0.00618566 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
979, in EndScriptedSection
0.00618566   win32api.OutputDebugString("".join(traceback.format_stack()))
0.00675985*** OnEnterScript ***
0.00718076 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 324, in
_InvokeEx_
0.00718076   return self._invokeex_(dispid, lcid, wFlags, args, kwargs,
serviceProvider)
0.00718076 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 585, in
_invokeex_
0.00718076   return func(*args)
0.00718076 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
610, in SetScriptState
0.00718076   self.Run()
0.00718076 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
788, in Run
0.00718076   self.ExecutePendingScripts()
0.00718076 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
736, in ExecutePendingScripts
0.00718076   self.DoExecutePendingScripts()
0.00718076 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\pyscript.py",
line 238, in DoExecutePendingScripts
0.00718076   self.ExecInScriptedSection(codeBlock, globs)
0.00718076 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
899, in ExecInScriptedSection
0.00718076   self.BeginScriptedSection()
0.00718076 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
972, in BeginScriptedSection
0.00718076   win32api.OutputDebugString("".join(traceback.format_stack()))
3.00900340*** OnLeaveScript ***
3.00964451 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 324, in
_InvokeEx_
3.00964451   return self._invokeex_(dispid, lcid, wFlags, args, kwargs,
serviceProvider)
3.00964451 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 585, in
_invokeex_
3.00964451   return func(*args)
3.00964451 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
610, in SetScriptState
3.00964451   self.Run()
3.00964451 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
788, in Run
3.00964451   self.ExecutePendingScripts()
3.00964451 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
736, in ExecutePendingScripts
3.00964451   self.DoExecutePendingScripts()
3.00964451 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\pyscript.py",
line 238, in DoExecutePendingScripts
3.00964451   self.ExecInScriptedSection(codeBlock, globs)
3.00964451 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
905, in ExecInScriptedSection
3.00964451   self.EndScriptedSection()
3.00964451 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
979, in EndScriptedSection
3.00964451   win32api.OutputDebugString("".join(traceback.format_stack()))
3.01041079pythoncom error:
3.01048589Unexpected exception in gateway method 'SetScriptSite'
3.01056170
3.01062036
3.01094675Traceback (most recent call last):
3.01094675 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 324, in
_InvokeEx_
3.01094675   return self._invokeex_(dispid, lcid, wFlags, args, kwargs,
serviceProvider)
3.01094675 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 585, in
_invokeex_
3.01094675   return func(*args)
3.01094675 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
580, in SetScriptSite
3.01094675   self.lcid = site.GetLCID()
3.01094675AttributeError: 'NoneType' object has no attribute 'GetLCID'
3.01102114pythoncom error:
3.01107931Unexpected gateway error
3.01122880
3.01147223
3.01194453Traceback (most recent call last):
3.01194453 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 324, in
_InvokeEx_
3.01194453   return self._invokeex_(dispid, lcid, wFlags, args, kwargs,
serviceProvider)
3.01194453 File
"C:\Python27\lib\site-packages\win32com\server\policy.py", line 585, in
_invokeex_
3.01194453   return func(*args)
3.01194453 File
"C:\Python27\lib\site-packages\win32comext\axscript\client\framework.py", line
580, in SetScriptSite
3.01194453   self.lcid = site.GetLCID()
3.01194453AttributeError: 'NoneType' object has no attribute 'GetLCID'



2013/5/30 Mark Hammond <skippy.hamm...@gmail.com
<mailto:skippy.hamm...@gmail.com>>

    Apart from the engine being called with no script to execute for
    some reason, it may be that an event handler is being added, which
    causes Python to execute things twice - once to "build" the event
    handler, and again when it is actually executed.

    Either way, if you check out
    win32comext/axscript/client/__framework.py and look for
    ApplyInScriptedSection(), you will find where these calls originate
    from.  If you can print (or otherwise arrange to see) what the code
    is, it might give us more of a clue.

    HTH,

    Mark


    On 30/05/2013 3:34 AM, Milan Kaše wrote:

        Hello,
        a user of our application which can host various active scripting
        engines reported problems when using the application together with
        Python active scripting engine. I traced the problem down to the
        order
        in which the engine calls the site's OnEnterScript/OnLeaveScript
        methods.

        The usual scenario with other engines (including MS JScript and
        VBScript) is:
        1. OnEnterScript
        2. ...executing script...
        3. OnLeaveScript

        However with Python engine, after calling
        IActiveScript.SetScriptState(__SCRIPTSTATE_CONNECTED) the
        scenario is
        following:
        1. OnEnterScript
        2. OnLeaveScript
        3. OnEnterScript
        4. ...executing script...
        5. OnLeaveScript

        One would expect either the first scenario or in case the events are
        raised multiple times, then the calls should be nested (as stated in
        MSDN,
        http://msdn.microsoft.com/en-__us/library/9c1cww48(v=vs.94).__aspx
        <http://msdn.microsoft.com/en-us/library/9c1cww48(v=vs.94).aspx>).
        Is the Python's way of calling these methods intentional or is
        it a bug?

        Thanks,
        Milan


        _________________________________________________
        python-win32 mailing list
        python-win32@python.org <mailto:python-win32@python.org>
        http://mail.python.org/__mailman/listinfo/python-win32
        <http://mail.python.org/mailman/listinfo/python-win32>




_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to