none
Application hang when Tablet PC Input service running in Windows 7 64-bit only

    Question

  • I have a Dell Latitude XT2 tablet running Windows 7 64-bit Professional SP1.  When running an application when the Tablet Feature is turned on and the Tablet PC Input service is running, a specific dialog in our app will fail to create the controls on the dialog.  The dialog is shown, it just contains no controls because it short circuits when the control fails to create.  It fails when creating the windows handle for a treeview control I believe.  The create returns a zero for failure but GetLastError() doesn't return an error.

    If the tablet service is not running, the application works as designed.  If tiptsf.dll is loaded in the application process, the failure will occur.  This looks to be the tablet input panel.  If the tablet feature is turned off but the tablet service is still running, this dll is not injected in the process and therefore allows the application to function correct and the pen to work, just not the tablet input panel.  This particular hang happens 4 dialogs deep in the application.

    We've also had similar crashes on Windows 7 64-bit, but I haven't narrowed them down to the tablet service.  This particular problem does not occur on any other operating system that we support.

    An exception does occur when the application is forcefully closed, but it is unrelated to the actual problem.  I've turned on the registry setting for the following hotfix http://support.microsoft.com/kb/976038, so that the exception that occurs gets back to the app, but it reveals nothing of importance to me.  It's basically because the application is in a state that it should not be in and that is not handled.  This is what is generated in the event log:

    --------------------------------------------------------

    Source:        Application Error
    Date:          1/18/2012 2:41:00 PM
    Event ID:      1000
    Task Category: (100)
    Level:         Error
    Keywords:      Classic
    User:          N/A
    Computer:      HVS2VP1
    Description:
    Faulting application name: dvcapp.exe, version: 2.600.2585.0, time stamp: 0x4ec201fa
    Faulting module name: PWUICore.dll, version: 2.600.2587.0, time stamp: 0x4ec3f589
    Exception code: 0xc000041d
    Fault offset: 0x00023796
    Faulting process id: 0x1240
    Faulting application start time: 0x01ccd62142283486
    Faulting application path: C:\Lewis\PatronSystem\DEVAPP\dvcapp.exe
    Faulting module path: C:\Lewis\PatronSystem\DEVAPP\PWUICore.dll
    Report Id: baa587e6-4214-11e1-a870-782bcbe900c5

    --------------------------------------------------------

    Some of our customers use the tablet feature so turning this feature off is not a long term solution.

    Is there a patch or workaround for this type of problem or something that I can do development wise?  The fact that it fails to create a windows handle but returns no reason why leaves me hanging.

    Not sure if this is the correct forum for this problem, but since it only occurs on Windows 7 64-bit, figured I'd start here.

     

    Thursday, January 19, 2012 4:15 PM

Answers

  • Hi Tony,

    Based on the symptoms and call stack I don't think this is the accessibility handling problem that Bob mentioned. Based on the problem occurring in x64, CreateWindowEx failing, and the very deep call stack you have there I suspect your thread is running out of kernel stack as described in Q266641: Recursive calls to window manager functions may fail unexpectedly . The TIP sets a WH_CALLWNDPROC hook to help it track the caret, and the other systems you've seen it on probably also run something which sets a hook. Spy++ is a good test app for this that will likely make it more reproducable.

    The remedy would be to break up the synchronous calls. Instead of initializing the controls or launching new dialogs or such directly in response to a sent message, make the call asynchronous by posting a message to the window to let the stack unwind and do the initialization briefly later. I'm not sure which frames in the stack are your code, which are 3rd party, or what exactly those do so I can't provide more specific advise, but you should be able to apply the general concept to your code.

    --Rob

    • Proposed as answer by Bob_BaoMVP, Moderator Monday, January 23, 2012 2:27 AM
    • Marked as answer by HCF TG Monday, January 23, 2012 5:58 PM
    Friday, January 20, 2012 7:51 PM

All replies

  • Thank for your feedback, could you please post more information about your application, and about the dialog, what is the control in this dialog? If it is possible, could you please try to narrow the exception scope, or share a dump of this error.We could help you to check which component occur this error, and then can help you point one direction.

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Friday, January 20, 2012 3:19 AM
    Moderator
  • Hi HCF TG,

    I got a help from an expert, and this issue is similar with this thread on the forum: http://social.msdn.microsoft.com/Forums/en-US/windowsaccessibilityandautomation/thread/75554c30-1232-4afe-aa00-a7a36b16a60e

    This problem may be caused by the accessibility code, and you could try to test it if it can be reproduced in a non Tablet PC with an accessibility application such as Narrator (All Programs > Accessories > Ease of Access) or Inspect (a Windows SDK tool). And then try to run it under debugger and catch first chance exceptions.

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Friday, January 20, 2012 5:42 AM
    Moderator
  • Hi Bob,

    The control that fails to create is a treeview control in CWnd::CreateEX.  There are 3 edits, 3 labels, a checkbox, and a toolbar across the top with 5 buttons.  The exception occurs in our code when closing the dialog. I don't believe the exception when closing is relevant though, it only occurs because the dialog was never populated.  The problem is that the control fails to create.  The crash dump I have is when you close the dialog, not where the error actually occurs.

    Also, this app is written in MS C++.

    Thanks for the response.  I will look into the link below.

    Tony



    • Edited by HCF TG Friday, January 20, 2012 4:31 PM
    Friday, January 20, 2012 3:19 PM
  • This is the call stack up to the point where the CWnd::CreateEx call for the tree view control fails:

    >    winctrl.dll!C_Control::CreateControlEx(unsigned long fWndStyleEx, const wchar_t * pszClassName, const wchar_t * pszWindowName, unsigned long fWndStyle, unsigned long fCtlStyle, const tagRECT & rcCtl, CWnd * pParent, unsigned int nCtlId)  Line 151    C++
         winctrl.dll!C_TreeCtrl::Create(unsigned long fStyles, const tagRECT & rc, CWnd * pParent, unsigned int nID, unsigned long fCustomStyles, unsigned long fExStyles)  Line 393    C++
         qsuicore.dll!C_QsPanel::CreateTocTree(const tagSIZE & siz)  Line 1921    C++
         qsuicore.dll!C_QsPanel::OnCreate(tagCREATESTRUCTW * lpcs)  Line 433 + 0x11 bytes    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x307 bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         winctrl.dll!C_Panel::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 231 + 0xa bytes    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0x693 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnINLPCREATESTRUCT@4()  + 0x68 bytes   
         ntdll.dll!774e010a()    
         [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]   
         user32.dll!_NtUserCreateWindowEx@60()  + 0x15 bytes   
         user32.dll!_VerNtUserCreateWindowEx@52()  + 0x18a bytes   
         user32.dll!__CreateWindowEx@52()  + 0xd4 bytes   
         user32.dll!_CreateWindowExW@48()  + 0x33 bytes   
         mfc100u.dll!AfxCtxCreateWindowExW()  + 0x5e bytes   
         mfc100u.dll!CWnd::CreateEx()  + 0xa5 bytes   
         mfc100u.dll!CWnd::CreateEx()  + 0x44 bytes   
         winctrl.dll!C_Control::CreateControlEx(unsigned long fWndStyleEx, const wchar_t * pszClassName, const wchar_t * pszWindowName, unsigned long fWndStyle, unsigned long fCtlStyle, const tagRECT & rcCtl, CWnd * pParent, unsigned int nCtlId)  Line 151 + 0x1d bytes    C++
         winctrl.dll!C_Panel::Create(unsigned long fStyles, const tagRECT & rc, CWnd * pParent, unsigned int nCtrlID, unsigned long fCustomStyles, unsigned long fExStyles)  Line 151 + 0x38 bytes    C++
         pwuicore.dll!C_SessionView::CreateQsPanel()  Line 529 + 0x41 bytes    C++
         qsuicore.dll!C_QsSurrogate::OnCreate(tagCREATESTRUCTW * lpcs)  Line 627 + 0xc bytes    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x307 bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0x693 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnINLPCREATESTRUCT@4()  + 0x68 bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserCreateWindowEx@60()  + 0x15 bytes   
         user32.dll!_VerNtUserCreateWindowEx@52()  + 0x18a bytes   
         user32.dll!__CreateWindowEx@52()  + 0xd4 bytes   
         user32.dll!_CreateWindowExW@48()  + 0x33 bytes   
         mfc100u.dll!AfxCtxCreateWindowExW()  + 0x5e bytes   
         mfc100u.dll!CWnd::CreateEx()  + 0xa5 bytes   
         mfc100u.dll!CWnd::Create()  + 0x49 bytes   
         pwuicore.dll!C_ServPropView::Create(unsigned long fStyle, const tagRECT & rc, CWnd * pParent, unsigned int nID, LcsXMLNode & ServiceCtx)  Line 808 + 0x36 bytes    C++
         pwuicore.dll!C_ServPropDialog::InitDlg()  Line 1590    C++
         winuifw.dll!C_Dialog::OnPostInitDialog(unsigned int wParam, long lParam)  Line 803 + 0xc bytes    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x2f5 bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         winuifw.dll!C_Dialog::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 656 + 0xd bytes    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchMessageWorker@8()  + 0xed bytes   
         user32.dll!_DispatchMessageW@4()  + 0xf bytes   
         mfc100u.dll!AfxInternalPumpMessage()  + 0x40 bytes   
         mfc100u.dll!CWnd::RunModalLoop()  + 0xc8 bytes   
         winuifw.dll!C_Dialog::DoModal()  Line 425    C++
         dvcord.dll!OrderEditCarePlanTask(long PocID, const _GUID & ServiceGUID, C_DdxBuffer * pDxBuffer, C_DdxGroup * pDxGroup, int nRowsetIdx)  Line 503 + 0x16 bytes    C++
         dvccht.dll!C_ChartOrderPanel::OnOrpnTaskProps(unsigned int nID, tagNMHDR * pNmHdr, long * pResult)  Line 788 + 0x41 bytes    C++
         mfc100u.dll!_AfxDispatchCmdMsg()  + 0x85 bytes   
         mfc100u.dll!CCmdTarget::OnCmdMsg()  + 0x124 bytes   
         winctrl.dll!C_Panel::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 257 + 0x14 bytes    C++
         dvccore.dll!C_DeviceView::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 160    C++
         winuifw.dll!C_FrameWnd::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 278    C++
         winctrl.dll!C_ToolBar::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 158    C++
         winctrl.dll!C_DockCtlStack::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 882 + 0x14 bytes    C++
         winuifw.dll!C_FrameWnd::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 270 + 0x1b bytes    C++
         winctrl.dll!C_ToolBar::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 158    C++
         winctrl.dll!C_DockCtlStack::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 882 + 0x14 bytes    C++
         winuifw.dll!C_FrameWnd::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 270 + 0x1b bytes    C++
         mfc100u.dll!CWnd::OnNotify()  + 0x7b bytes   
         dvcapp.exe!C_MainFrame::OnNotify(unsigned int wParam, long lParam, long * pResult)  Line 220    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x9e bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         oruifw.dll!C_VerbalProcessDlg::OnOrpnmTaskProps(unsigned int nID, tagNMHDR * pNmHdr, long * pResult)  Line 1073 + 0x14 bytes    C++
         mfc100u.dll!_AfxDispatchCmdMsg()  + 0x85 bytes   
         mfc100u.dll!CCmdTarget::OnCmdMsg()  + 0x124 bytes   
         mfc100u.dll!CPropertySheet::OnCmdMsg()  + 0x1d bytes   
         oruifw.dll!C_VerbalProcessDlg::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 656 + 0x1c bytes    C++
         winwkfl.dll!C_ProcessPanel::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 876 + 0x16 bytes    C++
         mfc100u.dll!CWnd::OnNotify()  + 0x7b bytes   
         winwkfl.dll!C_WorkflowPanel::OnNotify(unsigned int wParam, long lParam, long * pResult)  Line 720    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x9e bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         winctrl.dll!C_Control::NmNotifyParent(tagNMHDR * pNmHdr)  Line 1260 + 0x29 bytes    C++
         oruifw.dll!C_OrderQsPanel::HandleDdfAggregateEdit(C_DdxBuffer & Buffer, const C_DdxId & DataId)  Line 716 + 0x2f bytes    C++
         qsuicore.dll!C_QsPanel::OnDdfAggregateEdit(unsigned int nID, tagNMHDR * pNmHdr, long * pResult)  Line 2828 + 0x2e bytes    C++
         mfc100u.dll!_AfxDispatchCmdMsg()  + 0x85 bytes   
         mfc100u.dll!CCmdTarget::OnCmdMsg()  + 0x124 bytes   
         winctrl.dll!C_Panel::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 257 + 0x14 bytes    C++
         oruifw.dll!C_VerbalProcessDlg::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 660 + 0x1d bytes    C++
         ddfui.dll!C_DdfDialog::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 627 + 0x23 bytes    C++
         mfc100u.dll!CWnd::OnNotify()  + 0x7b bytes   
         mfc100u.dll!CWnd::OnWndMsg()  + 0x9e bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         winuifw.dll!C_Dialog::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 656 + 0xd bytes    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         winctrl.dll!C_Control::NmNotifyParent(tagNMHDR * pNmHdr)  Line 1260 + 0x29 bytes    C++
         ddfui.dll!C_DdfControl::FsmDataAggEdit(tagFsmNotify * pNotify)  Line 2523 + 0xf bytes    C++
         ddfui.dll!C_DdfControl::OnNotify(unsigned int wParam, long lParam, long * pResult)  Line 321 + 0x8 bytes    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x9e bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         winctrl.dll!C_Panel::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 231 + 0xa bytes    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         lcscore.dll!C_Fsm::RouteNotification(tagFsmNotify * pNotify)  Line 770 + 0x11 bytes    C++
         lcscore.dll!C_Fsm::RouteNotification(tagFsmAction * pAction, int nCode)  Line 830 + 0x14 bytes    C++
         ddfrt.dll!C_FsmDlg::FsmDataAction(const C_FsmDlgAction * pAction)  Line 1204 + 0x15 bytes    C++
         ddfrt.dll!C_FsmDlg::ExecuteAction(const C_FsmAction * pAction)  Line 763    C++
         lcscore.dll!C_Fsm::ExecuteTransition()  Line 398 + 0x2f bytes    C++
         lcscore.dll!C_Fsm::SetState(int nEventId)  Line 363    C++
         ddfui.dll!C_DdfControl::OnNotify(unsigned int wParam, long lParam, long * pResult)  Line 407    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x9e bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         winctrl.dll!C_Panel::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 231 + 0xa bytes    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         winctrl.dll!C_Control::NmNotifyParent(tagNMHDR * pNmHdr)  Line 1260 + 0x29 bytes    C++
         winctrl.dll!C_Control::NmNotifyParent(unsigned int nCode)  Line 1274 + 0x11 bytes    C++
         winctrl.dll!C_BtnCtrl::BnClicked()  Line 276    C++
         mfc100u.dll!_AfxDispatchCmdMsg()  + 0x3f bytes   
         mfc100u.dll!CCmdTarget::OnCmdMsg()  + 0x124 bytes   
         mfc100u.dll!CWnd::ReflectChildNotify()  + 0x7a bytes   
         mfc100u.dll!CWnd::SendChildNotifyLastMsg()  + 0x36 bytes   
         mfc100u.dll!CWnd::ReflectLastMsg()  + 0x98 bytes   
         mfc100u.dll!CWnd::OnCommand()  + 0x7d bytes   
         mfc100u.dll!CWnd::OnWndMsg()  + 0x66 bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         winuifw.dll!C_Dialog::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 656 + 0xd bytes    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         winctrl.dll!C_Panel::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 207    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         comctl32.dll!Button_NotifyParent()  + 0x3f bytes   
         comctl32.dll!Button_ReleaseCapture()  + 0x8218b bytes   
         comctl32.dll!Button_WndProc()  + 0x79058 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_CallWindowProcAorW@24()  + 0x5e bytes   
         user32.dll!_CallWindowProcW@20()  + 0x1b bytes   
         mfc100u.dll!CWnd::DefWindowProcW()  + 0x44 bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x3b bytes   
         winctrl.dll!C_BtnCtrl::WindowProc(unsigned int message, unsigned int wParam, long lParam)  Line 235 + 0xd bytes    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchMessageWorker@8()  + 0xed bytes   
         user32.dll!_DispatchMessageW@4()  + 0xf bytes   
         user32.dll!_IsDialogMessageW@8()  + 0x11e bytes   
         mfc100u.dll!CWnd::IsDialogMessageW()  + 0x32 bytes   
         mfc100u.dll!CWnd::PreTranslateInput()  + 0x2d bytes   
         mfc100u.dll!CDialog::PreTranslateMessage()  + 0xcf bytes   
         winuifw.dll!C_Dialog::PreTranslateMessage(tagMSG * pMsg)  Line 624 + 0x8 bytes    C++
         mfc100u.dll!CWnd::WalkPreTranslateTree()  + 0x23 bytes   
         mfc100u.dll!AfxInternalPreTranslateMessage()  + 0x41 bytes   
         mfc100u.dll!CWinThread::PreTranslateMessage()  + 0xd bytes   
         mfc100u.dll!AfxPreTranslateMessage()  + 0x19 bytes   
         mfc100u.dll!AfxInternalPumpMessage()  + 0x2d bytes   
         mfc100u.dll!CWnd::RunModalLoop()  + 0xc8 bytes   
         winuifw.dll!C_Dialog::DoModal()  Line 425    C++
         qsuicore.dll!C_QsPanel::HandleDdfRowEdit(C_DdxBuffer & Buffer, const C_DdxId & RowsetDataId, int RowIdx)  Line 2929 + 0xc bytes    C++
         oruifw.dll!C_OrderQsPanel::HandleDdfRowEdit(C_DdxBuffer & Buffer, const C_DdxId & RowsetDataId, int RowIdx)  Line 674 + 0x12 bytes    C++
         qsuicore.dll!C_QsPanel::OnDdfRowEdit(unsigned int nID, tagNMHDR * pNmHdr, long * pResult)  Line 2806 + 0x35 bytes    C++
         mfc100u.dll!_AfxDispatchCmdMsg()  + 0x85 bytes   
         mfc100u.dll!CCmdTarget::OnCmdMsg()  + 0x124 bytes   
         winctrl.dll!C_Panel::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 257 + 0x14 bytes    C++
         oruifw.dll!C_VerbalProcessDlg::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 660 + 0x1d bytes    C++
         winwkfl.dll!C_ProcessPanel::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo)  Line 876 + 0x16 bytes    C++
         mfc100u.dll!CWnd::OnNotify()  + 0x7b bytes   
         winwkfl.dll!C_WorkflowPanel::OnNotify(unsigned int wParam, long lParam, long * pResult)  Line 720    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x9e bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         winctrl.dll!C_Panel::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 176    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         winctrl.dll!C_Control::NmNotifyParent(tagNMHDR * pNmHdr)  Line 1260 + 0x29 bytes    C++
         ddfui.dll!C_DdfControl::FsmDataRowEdit(tagFsmNotify * pNotify)  Line 2477    C++
         ddfui.dll!C_DdfControl::OnNotify(unsigned int wParam, long lParam, long * pResult)  Line 318 + 0x8 bytes    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x9e bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         winctrl.dll!C_Panel::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 231 + 0xa bytes    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         lcscore.dll!C_Fsm::RouteNotification(tagFsmNotify * pNotify)  Line 770 + 0x11 bytes    C++
         lcscore.dll!C_Fsm::RouteNotification(tagFsmAction * pAction, int nCode)  Line 830 + 0x14 bytes    C++
         ddfrt.dll!C_FsmDlg::FsmDataAction(const C_FsmDlgAction * pAction)  Line 1204 + 0x15 bytes    C++
         ddfrt.dll!C_FsmDlg::ExecuteAction(const C_FsmAction * pAction)  Line 763    C++
         lcscore.dll!C_Fsm::ExecuteTransition()  Line 398 + 0x2f bytes    C++
         lcscore.dll!C_Fsm::SetState(int nEventId)  Line 363    C++
         ddfui.dll!C_DdfControl::OnNotify(unsigned int wParam, long lParam, long * pResult)  Line 407    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x9e bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         winctrl.dll!C_Panel::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 231 + 0xa bytes    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         winctrl.dll!C_Control::NmNotifyParent(tagNMHDR * pNmHdr)  Line 1260 + 0x29 bytes    C++
         winctrl.dll!C_Control::NmNotifyParent(unsigned int nCode)  Line 1274 + 0x11 bytes    C++
         winctrl.dll!C_BtnCtrl::BnClicked()  Line 276    C++
         mfc100u.dll!_AfxDispatchCmdMsg()  + 0x3f bytes   
         mfc100u.dll!CCmdTarget::OnCmdMsg()  + 0x124 bytes   
         mfc100u.dll!CWnd::ReflectChildNotify()  + 0x7a bytes   
         mfc100u.dll!CWnd::SendChildNotifyLastMsg()  + 0x36 bytes   
         mfc100u.dll!CWnd::ReflectLastMsg()  + 0x98 bytes   
         mfc100u.dll!CWnd::OnCommand()  + 0x7d bytes   
         winwkfl.dll!C_WfDdfPanel::OnCommand(unsigned int wParam, long lParam)  Line 1234    C++
         mfc100u.dll!CWnd::OnWndMsg()  + 0x66 bytes   
         mfc100u.dll!CWnd::WindowProc()  + 0x24 bytes   
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         user32.dll!_SendMessageW@16()  + 0x4c bytes   
         winctrl.dll!C_Panel::WindowProc(unsigned int msg, unsigned int wParam, long lParam)  Line 207    C++
         mfc100u.dll!AfxCallWndProc()  + 0xb5 bytes   
         mfc100u.dll!AfxWndProc()  + 0x37 bytes   
         mfc100u.dll!AfxWndProcBase()  + 0x56 bytes   
         user32.dll!_InternalCallWinProc@20()  + 0x23 bytes   
         user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
         user32.dll!_DispatchClientMessage@24()  + 0x51 bytes   
         user32.dll!___fnDWORD@4()  + 0x2b bytes   
         ntdll.dll!774e010a()    
         user32.dll!_NtUserMessageCall@28()  + 0x15 bytes   
         user32.dll!_SendMessageWorker@24()  + 0x8c15 bytes   
         dvcabocp.dll!T_AGBOCollection<C_POCDevicePersonDemographicsAgg>::`vector deleting destructor'()  + 0x40 bytes    C++
         lcscore.dll!LcsNumDivMod(tagLcsNumeric Numerator, long Denominator, tagLcsNumeric * pRemainder)  Line 1765 + 0x9 bytes    C++
         0006050e()   

    Friday, January 20, 2012 4:47 PM
  • Hi Tony,

    Based on the symptoms and call stack I don't think this is the accessibility handling problem that Bob mentioned. Based on the problem occurring in x64, CreateWindowEx failing, and the very deep call stack you have there I suspect your thread is running out of kernel stack as described in Q266641: Recursive calls to window manager functions may fail unexpectedly . The TIP sets a WH_CALLWNDPROC hook to help it track the caret, and the other systems you've seen it on probably also run something which sets a hook. Spy++ is a good test app for this that will likely make it more reproducable.

    The remedy would be to break up the synchronous calls. Instead of initializing the controls or launching new dialogs or such directly in response to a sent message, make the call asynchronous by posting a message to the window to let the stack unwind and do the initialization briefly later. I'm not sure which frames in the stack are your code, which are 3rd party, or what exactly those do so I can't provide more specific advise, but you should be able to apply the general concept to your code.

    --Rob

    • Proposed as answer by Bob_BaoMVP, Moderator Monday, January 23, 2012 2:27 AM
    • Marked as answer by HCF TG Monday, January 23, 2012 5:58 PM
    Friday, January 20, 2012 7:51 PM
  • Thanks Rob.  I tested the Spy++ application on the problem tablet pc when the tablet service was disabled and I was able to still reproduce the problem.  So it seems you're on the right track.  I will look into making the creation of the dialogs asynchronous and see where it gets me.  I appreciate the help!

    Tony

    Friday, January 20, 2012 10:21 PM
  • Rob,

    I just hacked together something to test your suggestion and the dialog now displays correctly.  The stuff behind the scenes isn't hooked up but the controls are being created.  Thanks for your help!

    Monday, January 23, 2012 5:58 PM