https://bugs.documentfoundation.org/show_bug.cgi?id=156256

--- Comment #10 from Albrecht Müller <[email protected]> ---
(In reply to Rafael Lima from comment #9)
> It is getting stuck in basctl/source/basicide/baside2b.cxx in method
> WatchWindow::ImplGetSBXForEntry.
> 
> More specifically, when it is searching for the "Data" property, it gets
> stuck in:
> 
> pVar->Get( aRes );
> 
> And never comes out of this Get call.
> 
> I still haven't figured out why =/

Your observation may point to a severe issue in the design of the Watch panel.
I suspect this for the following reasons:

a) The “pVar->Get( aRes )” call probably creates contents of the tree that will
be displayed in the Watch panel.

and 

b) The code of the Watch panel expects that this call will never fail.

The problem is that “pVar->Get( aRes )” will have to execute code in the aRes
object, e.g. getter functions. As aRes may be a buggy object of unknown origin
you cannot assume that it behaves correctly. A getter function may run into an
endless loop, wait for an event that never happens, allocate excessive amounts
of memory etc. This way a single broken and otherwise unused method of the aRes
object may cause a machine freeze.

Thus there may be two separate issues:

- The Watch panel should provide some safeguard against misbehaving objects,
e.g. execute the “pVar->Get( aRes )” statement in some kind of sandbox and
provide some user interface that allows to deal with situations where the
object to inspect does not work properly.

- The com.sun.star.sheet.SheetCellRanges object created by the Basic code may
have some unexpected features that make it impossible for the Get call to
return. My guess is that it somehow creates one or several data arrays that
contain an entry for each possible cell in the document.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to