Issue 116730

Summary: vcl: crash with multiple threads in Window::ImplGrabFocus
Product: gsl Reporter: Stephan Bergmann <stephan.bergmann.secondary>
Component: codeAssignee: AOO issues mailing list <issues>
Status: CONFIRMED --- QA Contact:
Severity: Trivial    
Priority: P3 CC: issues
Version: DEV300m98   
Target Milestone: ---   
Hardware: All   
OS: All   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---

Description Stephan Bergmann 2011-01-31 15:35:49 UTC
At least on DEV300_m98 based CWS sb138, unxsols4.pro, executing
toolkit/qa/unoapi once failed at

[...]
33: ***** State for
toolkit.MutableTreeNode::com::sun::star::awt::tree::XMutableTreeNode ******
33: Whole interface: PASSED.OK
33:
*******************************************************************************************
33: LOG>     disposing xTextDoc 
33: ***** State for toolkit.MutableTreeNode ******
33: Whole component: PASSED.OK
33: **********************************************
33: Creating: toolkit.TabController
33: LOG> Log started 29.00.2011 - 07:00:14
33: LOG> creating a textdocument
33: ImplementationName: stardiv.Toolkit.StdTabController
33: Environment created
33: LOG> Log started 29.00.2011 - 07:00:15
33: checking: [toolkit.TabController::com::sun::star::awt::XTabController] is
iface: [com.sun.star.awt.XTabController] testcode: [ifc.awt._XTabController]
33: LOG> Execute: setModel()
33: LOG> setModel(): SKIPPED.OK
33: 
33: LOG> Execute: getModel()
33: LOG> starting required method: setModel()
33: LOG> ! Required method setModel() failed
33: LOG> getModel(): SKIPPED.OK
33: 
33: LOG> Execute: setContainer()
33: LOG> setContainer(): SKIPPED.OK
33: 
33: LOG> Execute: getContainer()
33: LOG> starting required method: setContainer()
33: LOG> ! Required method setContainer() failed
33: LOG> getContainer(): SKIPPED.OK
33: 
33: LOG> Execute: getControls()
33: LOG> getControls(): SKIPPED.OK
33: 
33: LOG> Execute: autoTabOrder()
33: LOG> autoTabOrder(): SKIPPED.OK
33: 
33: LOG> Execute: activateTabOrder()
33: LOG> activateTabOrder(): SKIPPED.OK
33: 
33: LOG> Execute: activateFirst()
33: LOG> activateFirst(): SKIPPED.OK
33: 
33: LOG> Execute: activateLast()
33: com.sun.star.lang.DisposedException
[...]
33: 28159 Segmentation Fault - core dumped
[...]

with

(dbx) where
current thread: t@1
=>[1] Window::ImplRemoveDel(0xd73df0, 0xffbfc260, 0x0, 0xfd09f2e8, 0x0, 0x0), at
0xfced29a4
  [2] Window::CallEventListeners(0xd73df0, 0xffbfc270, 0x0, 0xfd0929e0, 0x344,
0xffbfc260), at 0xfcedbbc0
  [3] Window::PreNotify(0xd73df0, 0xffbfc3e8, 0xd73df0, 0x0, 0xc860c0,
0xd73f30), at 0xfcedb644
  [4] PushButton::PreNotify(0xd73df0, 0xffbfc3e8, 0xfd0929e0, 0x42c, 0xfcefcb28,
0xfd0ade84), at 0xfcefcdfc
  [5] Window::ImplGrabFocus(0xc49f48, 0xd73df0, 0xfd0929e0, 0x1, 0xffbfc408,
0xfd09eb0c), at 0xfced7ce8
  [6] Window::ImplGrabFocus(0xe0ff78, 0x0, 0xfd0929e0, 0x1c00, 0xffbfc4b0,
0x1a400), at 0xfced793c
  [7] Window::ImplAsyncFocusHdl(0xe0ff78, 0x1, 0x0, 0xfd0929e0, 0xe9aeb0,
0xd96ed0), at 0xfceee374
  [8] ImplHandleUserEvent(0xe12968, 0x0, 0x73f490, 0xfceee038, 0x0, 0x1a37dc),
at 0xfceee944
  [9] ImplWindowFrameProc(0x15, 0x2e8, 0x16, 0x54, 0x160000, 0x515558), at
0xfceef410
  [10] SalDisplay::DispatchInternalEvent(0x3ff08, 0x22810, 0xfceef1dc, 0x16,
0xe12968, 0x5157c8), at 0xfa72cd8c
  [11] GtkXLib::userEventFn(0x27258, 0xfd09eb0c, 0xfd09eaf8, 0xfd3a29c4, 0x0,
0x27228), at 0xfd34a5f8
  [12] g_main_dispatch(0x3f0f0, 0xfd23ec00, 0x0, 0x0, 0xfffffffd, 0xffffffef),
at 0xfd1d5ac8
  [13] g_main_context_dispatch(0x3f0f0, 0x2, 0x3f0a8, 0x1, 0xfd23ec00, 0x3f0f0),
at 0xfd1d6ffc
  [14] g_main_context_iterate(0x1, 0x0, 0x1, 0x3f0f0, 0x3f0f8, 0x0), at 0xfd1d74c8
  [15] g_main_context_iteration(0x0, 0xfd23ec00, 0xfd3a8ef4, 0x3f0f0, 0x1, 0x0),
at 0xfd1d76d8
  [16] GtkXLib::Yield(0x27258, 0x1, 0x0, 0x1, 0xfd3a29c4, 0xfd09eaf8), at 0xfd34a7d0
  [17] ImplYield(0xfd0929e0, 0xfd09eb0c, 0x42c, 0x0, 0x1, 0x0), at 0xfccda0b0
  [18] Application::Execute(0x1, 0xfd09eb0c, 0xfd09eaf8, 0xfd0929e0, 0x42c,
0x400), at 0xfccd6a44
  [19] desktop::Desktop::Main(0xffbfd04c, 0x698b0, 0x698b0, 0xffbfcbd4,
0x457970, 0x698b0), at 0xfed19258
  [20] ImplSVMain(0xfed16f20, 0xfd09eaf8, 0x1, 0xfd09eb0c, 0xfd0929e0,
0xff1f6558), at 0xfccdde18
  [21] SVMain(0x0, 0xffbfd048, 0xfd09eaf8, 0x2, 0x80000000, 0x40000000), at
0xfccddff4
  [22] soffice_main(0x13400, 0xfed9c0ec, 0xfffec9d1, 0x13400, 0xfffec9c9,
0x13400), at 0xfed46e44
  [23] main(0x7, 0xffbfd144, 0xffbfd164, 0x21400, 0xff3900c0, 0x0), at 0x10f80
(dbx) dis -a ImplRemoveDel
0xfced2970: ImplRemoveDel       :       clr      [%o1 + 8]
0xfced2974: ImplRemoveDel+0x0004:       ld       [%o0 + 244], %g4
0xfced2978: ImplRemoveDel+0x0008:       ld       [%g4 + 92], %o5
0xfced297c: ImplRemoveDel+0x000c:       cmp      %o5, %o1
0xfced2980: ImplRemoveDel+0x0010:       bne,a,pn  %icc,ImplRemoveDel+0x24      
! 0xfced2994
0xfced2984: ImplRemoveDel+0x0014:       ld       [%o5 + 4], %o2
0xfced2988: ImplRemoveDel+0x0018:       ld       [%o1 + 4], %g5
0xfced298c: ImplRemoveDel+0x001c:       retl
0xfced2990: ImplRemoveDel+0x0020:       st       %g5, [%g4 + 92]
0xfced2994: ImplRemoveDel+0x0024:       cmp      %o2, %o1
0xfced2998: ImplRemoveDel+0x0028:       be,pn    %icc,ImplRemoveDel+0x44       
! 0xfced29b4
0xfced299c: ImplRemoveDel+0x002c:       nop
0xfced29a0: ImplRemoveDel+0x0030:       mov      %o2, %o5
0xfced29a4: ImplRemoveDel+0x0034:       ld       [%o2 + 4], %o2
0xfced29a8: ImplRemoveDel+0x0038:       cmp      %o2, %o1
0xfced29ac: ImplRemoveDel+0x003c:       bne,a,pt  %icc,ImplRemoveDel+0x34      
! 0xfced29a4
0xfced29b0: ImplRemoveDel+0x0040:       mov      %o2, %o5
0xfced29b4: ImplRemoveDel+0x0044:       ld       [%o1 + 4], %o3
0xfced29b8: ImplRemoveDel+0x0048:       retl
0xfced29bc: ImplRemoveDel+0x004c:       st       %o3, [%o5 + 4]
(dbx) regs
current thread: t@1
current frame:  [1]
g0-g1    0x00000000 0x00000000 0x00000000 0x0002a000
g2-g3    0x00000000 0x0043b558 0x00000000 0xfd55031c
g4-g5    0x00000000 0x00d73f30 0x00000000 0xffbfc3f8
g6-g7    0x00000000 0x00000000 0x00000000 0xff392a00
o0-o1    0x00000000 0x00d73df0 0x00000000 0xffbfc260
o2-o3    0x00000000 0x00000000 0x00000000 0xfd09f2e8
o4-o5    0x00000000 0x00000000 0x00000000 0x00000000
o6-o7    0x00000000 0xffbfc200 0x00000000 0xfcedbbc0
l0-l1    0x00000000 0x00aaaaf0 0x00000000 0x00000008
l2-l3    0x00000000 0x000417e8 0x00000000 0x00000000
l4-l5    0x00000000 0xfd0ad048 0x00000000 0x0001a668
l6-l7    0x00000000 0x0001a400 0x00000000 0xfd09f2e8
i0-i1    0x00000000 0x00d73df0 0x00000000 0xffbfc270
i2-i3    0x00000000 0x00000000 0x00000000 0xfd0929e0
i4-i5    0x00000000 0x00000344 0x00000000 0xffbfc260
i6-i7    0x00000000 0xffbfc280 0x00000000 0xfcedb644
y        0x00000000 0x00000000
ccr      0x00000000 0xfe101004
pc       0x00000000 0xfced29a4:ImplRemoveDel+0x34    ld       [%o2 + 4], %o2
npc      0x00000000 0xfced29a8:ImplRemoveDel+0x38    cmp      %o2, %o1
(dbx) where t@69
current thread: t@69
=>[1]
cppu::queryInterface<com::sun::star::lang::XTypeProvider,com::sun::star::lang::XServiceInfo,com::sun::star::frame::XFramesSupplier,com::sun::star::frame::XFrame,com::sun::star::lang::XComponent,com::sun::star::task::XStatusIndicatorFactory,com::sun::star::frame::XDispatchProvider,com::sun::star::frame::XDispatchInformationProvider,com::sun::star::frame::XDispatchProviderInterception,com::sun::star::beans::XPropertySet,com::sun::star::beans::XPropertySetInfo>(0xf50fb534,
0xf7051a48, 0xf269bcb8, 0xf269bcbc, 0xf269bcc0, 0xf269bcc0), at 0xf61bba78
  [2] framework::Frame::queryInterface(0xf50fb5a8, 0xf269bcb8, 0xf7051a48,
0x479f50, 0xf6375d6c, 0xf50fb534), at 0xf61ad6fc
  [3] SfxBindings::SetActiveFrame(0xe887c0, 0xf50fb648, 0xffc5bbcc, 0xf7046274,
0x0, 0xf6ca1e40), at 0xf6d30060
  [4] SfxViewFrame::MakeActive_Impl(0xe891d0, 0x0, 0xe891d0, 0x0, 0x0,
0xf7046274), at 0xf6eff944
  [5] SfxFrameWindow_Impl::Notify(0xe81068, 0xf50fb718, 0xe891d0, 0xf61bb530,
0xf637fbc0, 0x6), at 0xf6ede49c
  [6] Window::GetFocus(0xd73df0, 0xf50fb798, 0xd73f30, 0xfcf05088, 0xfd0ade84,
0x6), at 0xfcedabcc
  [7] PushButton::GetFocus(0xd73df0, 0xf50fb808, 0xfcefc758, 0xd73f30,
0xfcefcb28, 0xfd0ade84), at 0xfcefc794
  [8] Window::ImplGrabFocus(0xd73df0, 0x0, 0x0, 0xfd0ade84, 0xf50fb838,
0xfd09eb0c), at 0xfced7ea0
  [9] StdTabController::ImplActivateControl(0x0, 0x0, 0xfd76da50, 0x20000,
0xf20f0494, 0xffffffff), at 0xfd5ae0bc
  [10] StdTabController::activateLast(0xf1f1cb58, 0xf1d77450, 0x0, 0xb, 0xc,
0xf1f1cb7c), at 0xfd5afeb4
  [11] callVirtualMethod(0xf1f1cb58, 0xb, 0x0, 0x0, 0xf50fb9f0, 0x2), at 0xfc966dd8
  [12] __unnamed_CHEEKG1CQNUEv::cpp_call(0xdaf098, 0x0, 0x4, 0x0, 0x0,
0xf50fb9f0), at 0xfc962f18
  [13] bridges::cpp_uno::shared::unoInterfaceProxyDispatch(0xdaf098, 0xe0dc20,
0x0, 0x0, 0xf50fbb7c, 0x19), at 0xfc96347c
  [14] binaryurp::IncomingRequest::execute_throw(0xe0dd10, 0xf50fbd1c,
0xf50fbd10, 0x0, 0xfffeea2c, 0xf50fbb80), at 0xf6560174
  [15] binaryurp::IncomingRequest::execute(0xe0dd10, 0x0, 0xf50fbd1c,
0xf6588950, 0x1, 0xff2bee44), at 0xf655f608
  [16] request(0xe0dd10, 0xf65652cc, 0x11a9a50, 0xe1e0f0, 0x1, 0x0), at 0xf65652d4
  [17] cppu_threadpool::JobQueue::enter(0x11b05e0, 0x11a9a50, 0xe881f8, 0x1,
0xfebf4690, 0x1), at 0xfebd8f28
  [18] cppu_threadpool::ORequestThread::run(0xe881f8, 0xfebf32a8, 0x0, 0x0,
0xff3fa060, 0xe9f368), at 0xfebd99e4
  [19] cppu_requestThreadWorker(0xe881f8, 0xf50fbf90, 0xff343800, 0x0,
0xfefa3a00, 0x0), at 0xfebd944c
  [20] osl_thread_start_Impl(0xe9f358, 0xfebd9448, 0x16, 0xff01db58, 0xff069ff4,
0xe9f380), at 0xff01dd4c
Comment 1 philipp.lohmann 2011-01-31 15:42:12 UTC
@cd: that would seem to be because

neither StdTabController::ImplActivateControl
nor StdTabController::activateLast

does not get the SolarMutex ? Coul you please have a look ?