Issue 111148 - forms/qa/unoapi forms.OImageControlModel::com::sun::star::beans::XMultiPropertySet deadlock
Summary: forms/qa/unoapi forms.OImageControlModel::com::sun::star::beans::XMultiProper...
Status: CLOSED FIXED
Alias: None
Product: gsl
Classification: Code
Component: code (show other issues)
Version: DEV300m77
Hardware: All All
: P3 Trivial (vote)
Target Milestone: 3.4.0
Assignee: Frank Schönheit
QA Contact: issues@gsl
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-04-26 10:35 UTC by Stephan Bergmann
Modified: 2017-05-20 10:22 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments
deadlocking stacks (10.05 KB, text/plain)
2010-04-26 10:36 UTC, Stephan Bergmann
no flags Details

Note You need to log in before you can comment on or make changes to this issue.
Description Stephan Bergmann 2010-04-26 10:35:56 UTC
At least on DEV300_m77-based CWS sb120 (mainly making changes to the testing
framework), executing the forms/qa/unoapi tests at least under unxsoli4 non-pro
once deadlocked at the below point with the attached stacks.txt.  This might be
related to other UnoControl-related deadlocks, see issue 109939 and issue 111006.

5: checking:
[forms.OImageControlModel::com::sun::star::beans::XMultiPropertySet] is iface:
[com.sun.star.beans.XMultiPropertySet] testcode: [ifc.beans._XMultiPropertySet]
5: LOG> Execute: getPropertySetInfo()
5: Method getPropertySetInfo() finished with state OK
5: LOG> getPropertySetInfo(): PASSED.OK
5: 
5: LOG> Execute: setPropertyValues()
5: LOG> starting required method: getPropertyValues()
5: LOG> Execute: getPropertyValues()
5: LOG> starting required method: getPropertySetInfo()
5: Method getPropertyValues() finished with state OK
5: LOG> getPropertyValues(): PASSED.OK
5: 
5: LOG> Changing all properties
5: Method setPropertyValues() finished with state OK
5: LOG> setPropertyValues(): PASSED.OK
5: 
5: LOG> Execute: addPropertiesChangeListener()
5: LOG> starting required method: getPropertyValues()
5: Trying to change property ContextWritingModeLOG>  ... done
5: Trying to change property DataFieldLOG>  ... done
5: Trying to change property DefaultControlLOG>  ... done
5: Trying to change property EnableVisibleLOG>  ... done
5: Trying to change property EnabledLOG>  ... done
5: Trying to change property GraphicLOG>  ... done
5: Trying to change property HelpTextLOG>  ... done
5: Trying to change property HelpURLLOG>  ... done
5: Trying to change property ImageURLLOG>  ... done
5: Trying to change property InputRequiredLOG>  ... done
5: Trying to change property NameLOG>  ... done
5: Trying to change property NativeWidgetLookLOG>  ... done
5: Trying to change property PrintableLOG>  ... done
5: Trying to change property ReadOnlyLOG>  ... done
5: Trying to change property ScaleImageLOG>  ... done
5: Trying to change property ScaleMode
Comment 1 Stephan Bergmann 2010-04-26 10:36:56 UTC
Created attachment 69106 [details]
deadlocking stacks
Comment 2 Stephan Bergmann 2010-04-26 10:43:15 UTC
worked around for now by disabling the affected tests in
forms/qa/unoapi/knownissues.xcl, see
<http://hg.services.openoffice.org/cws/sb120/rev/cd4fe48f097d>; please revert
when fixing this issue
Comment 3 philipp.lohmann 2010-04-26 13:10:19 UTC
@fs: please have a look
Comment 4 Frank Schönheit 2010-04-26 13:11:33 UTC
targeting
Comment 5 Stephan Bergmann 2010-04-29 13:59:48 UTC
also affects forms.OImageControlModel::com::sun::star::beans::XPropertySet with
what looks like virtually the same deadlocking stacks, disabled for now as
<http://hg.services.openoffice.org/cws/sb120/rev/df79310e87c2>
Comment 6 Frank Schönheit 2010-09-14 07:08:38 UTC
Once more, the root cause here seems to be that an implementation of
setFastPropertyValue_NoBroadcast calls into another method of |this| which does
notifications to external components. Those notifications are done with the
component's mutex locked (since setFastPropertyValue_NoBroadcast is called with
that locked mutex), which then later on leads to deadlocks.

Fixing this requires to postpone the call into |this|' method to a point in time
where the mutex is not locked anymore. The (relatively new)
IEventNotificationHook-mechanism of OPropertySetHelper (a distant base class of
the UnoControlImageControlModel) might work for this, as it allows catching
OPropertySetHelper's property change notifications at a time where the mutex is
not locked anymore.
Comment 7 Frank Schönheit 2010-09-14 16:03:24 UTC
have a hard time reproducing the issue ... from looking at the stack, I think I
know what's going on, and I think I can fix it, but if 10 subsequent tests don't
exhibit the behavior, QA will not be able to verify the issue :-\
Comment 8 Frank Schönheit 2010-09-16 14:08:35 UTC
fixed in CWS dba34a

find more information about this CWS, like when it is available in the master
builds, in EIS, the Environment Information System:
http://eis.services.openoffice.org/EIS2/cws.ShowCWS?Path=DEV300/dba34a
Comment 9 Frank Schönheit 2010-09-24 08:40:14 UTC
targeting to 3.4, since the fix is part of a CWS which aims for this release
Comment 10 Frank Schönheit 2010-09-24 08:41:11 UTC
targeting to 3.4, since the fix is part of a CWS which aims for this release
Comment 11 Frank Schönheit 2010-09-29 09:57:15 UTC
developer issue, verified myself