SourceForge has been redesigned. Learn more.
Close

#1251 crash setWindowPos

ooDialog.4.2.3
open
ooDialog (58)
none
1
2015-01-31
2014-03-22
No

I'm experiencing a crash when executing the setWindowPos method under certain circumstances. It happens in an onShow method as shown here:

::METHOD onShow UNGUARDED
expose currItem
use arg toolTip, treeView

r = .Rect~new
if treeView~getItemRect(currItem, r) then do
treeView~client2screen(r)
toolTip~setWindowPos(0, r~right + 5, r~top, 0, 0, "NOACTIVATE NOSIZE NOZORDER")
return .true
end

return .false

The cursor is moved over items in a treeview to display associated infotip data. All works fine until the treeview is rebuilt by first issuing tree~deleteAll, after which the new items are inserted. When the cursor is then hovered after the rebuild, the crash occurs every time. If I comment out the setWindowPos call above, no crash occurs. I've tried to build a sample program that illustrates this event but (of course) I cannot get it to crash. Even if the tree rebuild process recreates the original contents of the tree, the crash occurs.

Below is the information logged by Windows:

Version=1
EventType=APPCRASH
EventTime=130399776296615730
ReportType=2
Consent=1
UploadTime=130399776297405775
ReportIdentifier=16948ef2-b1db-11e3-9be1-f0bf9765b8be
IntegratorReportIdentifier=16948ef1-b1db-11e3-9be1-f0bf9765b8be
WOW64=1
Response.BucketId=143504460
Response.BucketTable=17
Response.type=4
Sig[0].Name=Nombre de la aplicación
Sig[0].Value=rexxhide.exe
Sig[1].Name=Versión de la aplicación
Sig[1].Value=4.2.0.9892
Sig[2].Name=Marca de tiempo de la aplicación
Sig[2].Value=52eaf3ab
Sig[3].Name=Nombre del módulo con errores
Sig[3].Value=rexx.dll
Sig[4].Name=Versión del módulo con errores
Sig[4].Value=4.2.0.9892
Sig[5].Name=Marca de tiempo del módulo con errores
Sig[5].Value=52eaf39f
Sig[6].Name=Código de excepción
Sig[6].Value=c0000005
Sig[7].Name=Desplazamiento de excepción
Sig[7].Value=0003c8d9
DynamicSig[1].Name=Versión del sistema operativo
DynamicSig[1].Value=6.1.7601.2.1.0.256.1
DynamicSig[2].Name=Id. de configuración regional
DynamicSig[2].Value=3082
DynamicSig[22].Name=Información adicional 1
DynamicSig[22].Value=0a9e
DynamicSig[23].Name=Información adicional 2
DynamicSig[23].Value=0a9e372d3b4ad19135b953a78882e789
DynamicSig[24].Name=Información adicional 3
DynamicSig[24].Value=0a9e
DynamicSig[25].Name=Información adicional 4
DynamicSig[25].Value=0a9e372d3b4ad19135b953a78882e789
UI[2]=C:\Program Files (x86)\ooRexx\rexxhide.exe
UI[3]=Open Object Rexx Interface dejó de funcionar
UI[4]=Windows puede buscar una solución en línea al problema.
UI[5]=Buscar una solución en línea y cerrar el programa
UI[6]=Buscar una solución en línea más tarde y cerrar el programa
UI[7]=Cerrar el programa
LoadedModule[0]=C:\Program Files (x86)\ooRexx\rexxhide.exe
LoadedModule[1]=C:\Windows\SysWOW64\ntdll.dll
LoadedModule[2]=C:\Windows\syswow64\kernel32.dll
LoadedModule[3]=C:\Windows\syswow64\KERNELBASE.dll
LoadedModule[4]=C:\Windows\syswow64\USER32.dll
LoadedModule[5]=C:\Windows\syswow64\GDI32.dll
LoadedModule[6]=C:\Windows\syswow64\LPK.dll
LoadedModule[7]=C:\Windows\syswow64\USP10.dll
LoadedModule[8]=C:\Windows\syswow64\msvcrt.dll
LoadedModule[9]=C:\Windows\syswow64\ADVAPI32.dll
LoadedModule[10]=C:\Windows\SysWOW64\sechost.dll
LoadedModule[11]=C:\Windows\syswow64\RPCRT4.dll
LoadedModule[12]=C:\Windows\syswow64\SspiCli.dll
LoadedModule[13]=C:\Windows\syswow64\CRYPTBASE.dll
LoadedModule[14]=C:\Program Files (x86)\ooRexx\rexx.dll
LoadedModule[15]=C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\COMCTL32.dll
LoadedModule[16]=C:\Windows\syswow64\SHLWAPI.dll
LoadedModule[17]=C:\Program Files (x86)\ooRexx\REXXAPI.dll
LoadedModule[18]=C:\Windows\system32\WSOCK32.dll
LoadedModule[19]=C:\Windows\syswow64\WS2_32.dll
LoadedModule[20]=C:\Windows\syswow64\NSI.dll
LoadedModule[21]=C:\Windows\system32\IMM32.DLL
LoadedModule[22]=C:\Windows\syswow64\MSCTF.dll
LoadedModule[23]=C:\Program Files (x86)\ooRexx\OREXXOLE.DLL
LoadedModule[24]=C:\Windows\syswow64\ole32.dll
LoadedModule[25]=C:\Windows\syswow64\OLEAUT32.dll
LoadedModule[26]=C:\Program Files (x86)\ooRexx\rexxutil.DLL
LoadedModule[27]=C:\Windows\system32\WINSPOOL.DRV
LoadedModule[28]=C:\Windows\system32\mswsock.dll
LoadedModule[29]=C:\Windows\System32\wshtcpip.dll
LoadedModule[30]=C:\Windows\system32\NLAapi.dll
LoadedModule[31]=C:\Windows\system32\napinsp.dll
LoadedModule[32]=C:\Windows\system32\pnrpnsp.dll
LoadedModule[33]=C:\Windows\system32\DNSAPI.dll
LoadedModule[34]=C:\Windows\System32\winrnr.dll
LoadedModule[35]=C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live\WLIDNSP.DLL
LoadedModule[36]=C:\Windows\syswow64\PSAPI.DLL
LoadedModule[37]=C:\Windows\system32\wshbth.dll
LoadedModule[38]=C:\Program Files (x86)\Bonjour\mdnsNSP.dll
LoadedModule[39]=C:\Windows\system32\Iphlpapi.DLL
LoadedModule[40]=C:\Windows\system32\WINNSI.DLL
LoadedModule[41]=C:\Windows\System32\fwpuclnt.dll
LoadedModule[42]=C:\Windows\system32\rasadhlp.dll
LoadedModule[43]=C:\Program Files (x86)\ooRexx\oodialog.DLL
LoadedModule[44]=C:\Windows\syswow64\COMDLG32.dll
LoadedModule[45]=C:\Windows\syswow64\SHELL32.dll
LoadedModule[46]=C:\Windows\system32\WINMM.dll
LoadedModule[47]=C:\Windows\system32\OLEACC.dll
LoadedModule[48]=C:\Windows\system32\UxTheme.dll
LoadedModule[49]=C:\MinGW64\msys\home\Staffan\ooRexx\ooSQLite\bin\windows\oosqlite.DLL
LoadedModule[50]=C:\Windows\system32\apphelp.dll
LoadedModule[51]=C:\Users\Staffan\Documents\Work\Development\mfDimensions\bin\simpleExtension.dll
LoadedModule[52]=C:\Windows\system32\dwmapi.dll
LoadedModule[53]=C:\Program Files\WIDCOMM\Bluetooth Software\SysWOW64\BtMmHook.dll
State[0].Key=Transport.DoneStage1
State[0].Value=1
State[1].Key=DataRequest
State[1].Value=Bucket=143504460/nBucketTable=17/nResponse=1/n
FriendlyEventName=Dejó de funcionar
ConsentKey=APPCRASH
AppName=Open Object Rexx Interface
AppPath=C:\Program Files (x86)\ooRexx\rexxhide.exe

Staffan

Related

Bugs: #1251

Discussion

  • Mark Miesfeld

    Mark Miesfeld - 2014-03-22
    • labels: --> ooDialog
    • assigned_to: Mark Miesfeld
     
    • Staffan Tylen

      Staffan Tylen - 2014-03-22

      Hi Mark,

      Would you add the ooDialog version info, (rexx version also would be good.)

      ooDialog: ooDialog Version 4.2.3.9852 (an ooRexx Windows Extension)

      ooSQLite: ooSQLite Version 1.0.0.9916 (32 bit) (Encryption enabled)
      Built Feb 14 2014 17:52:50
      Copyright (c) RexxLA 2012-2013.
      All Rights Reserved.

      Rexx: Open Object Rexx Version 4.2.0

      SQLite: SQLite Library Version 3.8.3
      2014-02-03 14:04:11

      2014-02-03 14:04:11 6c643e45c274e755dc5a1a65673df79261c774be
      Encryption available: 1

      Microsoft Windows [Versión 6.1.7601]

      Where does:

      expose currItem

      come from? Are you sure it is valid? If you just did a delete all, are you
      sure it was not a deleted item?

      ::METHOD onGetInfoTip UNGUARDED
      expose currItem
      use arg id, hItem, text, maxLen, userData
      currItem = hItem

      Since you seem to be able to recreate this fairly easily, add this to the
      method:

      ::METHOD onShow UNGUARDED
      expose currItem
      use arg toolTip, treeView

      r = .Rect~new
      if treeView~getItemRect(currItem, r) then do
      say 'client:' r
      treeView~client2screen(r)
      say 'screen:' r
      toolTip~setWindowPos(0, r~right + 5, r~top, 0, 0, "NOACTIVATE NOSIZE
      NOZORDER")
      say 'sysErr:' .systemErrorCode
      return .true
      end

      return .false

      client: a Rect (60, 32, 142, 48)
      screen: a Rect (93, 143, 175, 159)

      (No systemErrorCode returned)

      Thanks.

      You're welcome :)

      Staffan

       
  • Mark Miesfeld

    Mark Miesfeld - 2014-03-22

    Hi Staffan,

    Would you add the ooDialog version info, (rexx version also would be good.)

    If you have at least ooDialog 4.2.3 then:

    C:\work.ooRexx>oodialog -v
    ooDialog 4.2.4.9940

    else use this small program:

    / oodver.rex /
    say .dlgUtil~version
    ::requires 'ooDialog.cls'

    C:\work.ooRexx>oodver
    ooDialog Version 4.2.4.9940 (an ooRexx Windows Extension)

    And:

    C:\work.ooRexx>rexx -v
    Open Object Rexx Version 4.2.0
    Build date: Feb 22 2014
    Addressing Mode: 64
    ...

    Where does:

    expose currItem

    come from? Are you sure it is valid? If you just did a delete all, are you sure it was not a deleted item?

    Since you seem to be able to recreate this fairly easily, add this to the method:

    ::METHOD onShow UNGUARDED
    expose currItem
    use arg toolTip, treeView

    r = .Rect~new
    if treeView~getItemRect(currItem, r) then do
    say 'client:' r
    treeView~client2screen(r)
    say 'screen:' r
    toolTip~setWindowPos(0, r~right + 5, r~top, 0, 0, "NOACTIVATE NOSIZE NOZORDER")
    say 'sysErr:' .systemErrorCode
    return .true
    end

    return .false

    Thanks.

     
  • Mark Miesfeld

    Mark Miesfeld - 2014-03-23
    • Group: None --> ooDialog.4.2.3
     
    • Staffan Tylen

      Staffan Tylen - 2014-03-24

      Mark,

      I've tried hard to get a working sample for you but I can't get it to crash
      :(

      I tested a change by replacing setWindowPos with setRect but the same crash
      happens.

      Looking at the MSDN documentation for setWindowPos I found the following:

      *If you have changed certain window data using SetWindowLong
      http://msdn.microsoft.com/en-us/library/windows/desktop/ms633591(v=vs.85).aspx,
      you must call SetWindowPos for the changes to take effect. Use the
      following combination for uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
      SWP_FRAMECHANGED. *

      I found a private method in ooDialog.cpp that calls setWindowLong but it
      does not call setWindowPos, at least not at that point. I don't know if any
      of this can help. As for debugging, can you suggest any temporary change I
      could make to ooDialog.cpp to get some useful information out of it at the
      time of the crash?

      Staffan

      On Sun, Mar 23, 2014 at 9:12 PM, Mark Miesfeld miesfeld@users.sf.netwrote:

      • Group: None --> ooDialog.4.2.3
      • Comment:

      Hi Staffan,

      I tried to reproduce this on my 64-bit system with no luck. I used
      deleteAll to remove all the items in a tree view, then repopulated the
      tree. Tool tips still worked fine and there was no crash.

      Unfortunately I don't currently have a working 32-bit system, so it will
      be a few days until I can test on 32-bit.

      In the mean time, you should continue to try and produce an example
      program that crashes. If you can not produce a simple example, just produce
      an example.


      Status: open
      Group: ooDialog.4.2.3
      Labels: ooDialog
      Created: Sat Mar 22, 2014 07:33 PM UTC by Staffan Tylen
      Last Updated: Sat Mar 22, 2014 08:59 PM UTC
      Owner: Mark Miesfeld

      I'm experiencing a crash when executing the setWindowPos method under
      certain circumstances. It happens in an onShow method as shown here:

      ::METHOD onShow UNGUARDED
      expose currItem
      use arg toolTip, treeView

      r = .Rect~new
      if treeView~getItemRect(currItem, r) then do
      treeView~client2screen(r)
      toolTip~setWindowPos(0, r~right + 5, r~top, 0, 0, "NOACTIVATE NOSIZE
      NOZORDER")
      return .true
      end

      return .false

      The cursor is moved over items in a treeview to display associated infotip
      data. All works fine until the treeview is rebuilt by first issuing
      tree~deleteAll, after which the new items are inserted. When the cursor is
      then hovered after the rebuild, the crash occurs every time. If I comment
      out the setWindowPos call above, no crash occurs. I've tried to build a
      sample program that illustrates this event but (of course) I cannot get it
      to crash. Even if the tree rebuild process recreates the original contents
      of the tree, the crash occurs.

      Below is the information logged by Windows:

      Version=1
      EventType=APPCRASH
      EventTime=130399776296615730
      ReportType=2
      Consent=1
      UploadTime=130399776297405775
      ReportIdentifier=16948ef2-b1db-11e3-9be1-f0bf9765b8be
      IntegratorReportIdentifier=16948ef1-b1db-11e3-9be1-f0bf9765b8be
      WOW64=1
      Response.BucketId=143504460
      Response.BucketTable=17
      Response.type=4
      Sig[0].Name=Nombre de la aplicación
      Sig[0].Value=rexxhide.exe
      Sig[1].Name=Versión de la aplicación
      Sig[1].Value=4.2.0.9892
      Sig[2].Name=Marca de tiempo de la aplicación
      Sig[2].Value=52eaf3ab
      Sig[3].Name=Nombre del módulo con errores
      Sig[3].Value=rexx.dll
      Sig[4].Name=Versión del módulo con errores
      Sig[4].Value=4.2.0.9892
      Sig[5].Name=Marca de tiempo del módulo con errores
      Sig[5].Value=52eaf39f
      Sig[6].Name=Código de excepción
      Sig[6].Value=c0000005
      Sig[7].Name=Desplazamiento de excepción
      Sig[7].Value=0003c8d9
      DynamicSig[1].Name=Versión del sistema operativo
      DynamicSig[1].Value=6.1.7601.2.1.0.256.1
      DynamicSig[2].Name=Id. de configuración regional
      DynamicSig[2].Value=3082
      DynamicSig[22].Name=Información adicional 1
      DynamicSig[22].Value=0a9e
      DynamicSig[23].Name=Información adicional 2
      DynamicSig[23].Value=0a9e372d3b4ad19135b953a78882e789
      DynamicSig[24].Name=Información adicional 3
      DynamicSig[24].Value=0a9e
      DynamicSig[25].Name=Información adicional 4
      DynamicSig[25].Value=0a9e372d3b4ad19135b953a78882e789
      UI[2]=C:\Program Files (x86)\ooRexx\rexxhide.exe
      UI[3]=Open Object Rexx Interface dejó de funcionar
      UI[4]=Windows puede buscar una solución en línea al problema.
      UI[5]=Buscar una solución en línea y cerrar el programa
      UI[6]=Buscar una solución en línea más tarde y cerrar el programa
      UI[7]=Cerrar el programa
      LoadedModule[0]=C:\Program Files (x86)\ooRexx\rexxhide.exe
      LoadedModule[1]=C:\Windows\SysWOW64\ntdll.dll
      LoadedModule[2]=C:\Windows\syswow64\kernel32.dll
      LoadedModule[3]=C:\Windows\syswow64\KERNELBASE.dll
      LoadedModule[4]=C:\Windows\syswow64\USER32.dll
      LoadedModule[5]=C:\Windows\syswow64\GDI32.dll
      LoadedModule[6]=C:\Windows\syswow64\LPK.dll
      LoadedModule[7]=C:\Windows\syswow64\USP10.dll
      LoadedModule[8]=C:\Windows\syswow64\msvcrt.dll
      LoadedModule[9]=C:\Windows\syswow64\ADVAPI32.dll
      LoadedModule[10]=C:\Windows\SysWOW64\sechost.dll
      LoadedModule[11]=C:\Windows\syswow64\RPCRT4.dll
      LoadedModule[12]=C:\Windows\syswow64\SspiCli.dll
      LoadedModule[13]=C:\Windows\syswow64\CRYPTBASE.dll
      LoadedModule[14]=C:\Program Files (x86)\ooRexx\rexx.dll
      LoadedModule[15]
      =C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\COMCTL32.dll
      LoadedModule[16]=C:\Windows\syswow64\SHLWAPI.dll
      LoadedModule[17]=C:\Program Files (x86)\ooRexx\REXXAPI.dll
      LoadedModule[18]=C:\Windows\system32\WSOCK32.dll
      LoadedModule[19]=C:\Windows\syswow64\WS2_32.dll
      LoadedModule[20]=C:\Windows\syswow64\NSI.dll
      LoadedModule[21]=C:\Windows\system32\IMM32.DLL
      LoadedModule[22]=C:\Windows\syswow64\MSCTF.dll
      LoadedModule[23]=C:\Program Files (x86)\ooRexx\OREXXOLE.DLL
      LoadedModule[24]=C:\Windows\syswow64\ole32.dll
      LoadedModule[25]=C:\Windows\syswow64\OLEAUT32.dll
      LoadedModule[26]=C:\Program Files (x86)\ooRexx\rexxutil.DLL
      LoadedModule[27]=C:\Windows\system32\WINSPOOL.DRV
      LoadedModule[28]=C:\Windows\system32\mswsock.dll
      LoadedModule[29]=C:\Windows\System32\wshtcpip.dll
      LoadedModule[30]=C:\Windows\system32\NLAapi.dll
      LoadedModule[31]=C:\Windows\system32\napinsp.dll
      LoadedModule[32]=C:\Windows\system32\pnrpnsp.dll
      LoadedModule[33]=C:\Windows\system32\DNSAPI.dll
      LoadedModule[34]=C:\Windows\System32\winrnr.dll
      LoadedModule[35]=C:\Program Files (x86)\Common Files\Microsoft
      Shared\Windows Live\WLIDNSP.DLL
      LoadedModule[36]=C:\Windows\syswow64\PSAPI.DLL
      LoadedModule[37]=C:\Windows\system32\wshbth.dll
      LoadedModule[38]=C:\Program Files (x86)\Bonjour\mdnsNSP.dll
      LoadedModule[39]=C:\Windows\system32\Iphlpapi.DLL
      LoadedModule[40]=C:\Windows\system32\WINNSI.DLL
      LoadedModule[41]=C:\Windows\System32\fwpuclnt.dll
      LoadedModule[42]=C:\Windows\system32\rasadhlp.dll
      LoadedModule[43]=C:\Program Files (x86)\ooRexx\oodialog.DLL
      LoadedModule[44]=C:\Windows\syswow64\COMDLG32.dll
      LoadedModule[45]=C:\Windows\syswow64\SHELL32.dll
      LoadedModule[46]=C:\Windows\system32\WINMM.dll
      LoadedModule[47]=C:\Windows\system32\OLEACC.dll
      LoadedModule[48]=C:\Windows\system32\UxTheme.dll
      LoadedModule[49]
      =C:\MinGW64\msys\home\Staffan\ooRexx\ooSQLite\bin\windows\oosqlite.DLL
      LoadedModule[50]=C:\Windows\system32\apphelp.dll
      LoadedModule[51]
      =C:\Users\Staffan\Documents\Work\Development\mfDimensions\bin\simpleExtension.dll
      LoadedModule[52]=C:\Windows\system32\dwmapi.dll
      LoadedModule[53]=C:\Program Files\WIDCOMM\Bluetooth
      Software\SysWOW64\BtMmHook.dll
      State[0].Key=Transport.DoneStage1
      State[0].Value=1
      State[1].Key=DataRequest
      State[1].Value=Bucket=143504460/nBucketTable=17/nResponse=1/n
      FriendlyEventName=Dejó de funcionar
      ConsentKey=APPCRASH
      AppName=Open Object Rexx Interface
      AppPath=C:\Program Files (x86)\ooRexx\rexxhide.exe

      Staffan

      Sent from sourceforge.net because you indicated interest in
      https://sourceforge.net/p/oorexx/bugs/1251/

      To unsubscribe from further messages, please visit
      https://sourceforge.net/auth/subscriptions/

       

      Related

      Bugs: #1251

  • Mark Miesfeld

    Mark Miesfeld - 2014-03-23

    Hi Staffan,

    I tried to reproduce this on my 64-bit system with no luck. I used deleteAll to remove all the items in a tree view, then repopulated the tree. Tool tips still worked fine and there was no crash.

    Unfortunately I don't currently have a working 32-bit system, so it will be a few days until I can test on 32-bit.

    In the mean time, you should continue to try and produce an example program that crashes. If you can not produce a simple example, just produce an example.

     
  • Staffan Tylen

    Staffan Tylen - 2014-03-25

    Mark,

    I've just found out that if the rexx code is compiled the crash doesn't seem to happen!!! This surely doesn't make debugging easier. In any case I enclose the sample code that I put together to try to illustrate what happens, even though I can't get it to crash. Maybe it can be of some help.

    Staffan

     

Anonymous
Anonymous

Cancel  Add attachments