Thoughts on editor disappearing issues
David Nolden
zwabel+kde at gmail.com
Thu Jun 12 08:46:14 UTC 2008
Am Donnerstag, 12. Juni 2008 03:48:45 schrieb Hamish Rodda:
> Hi,
>
> The problem: if the user closes the document while duchain parsing is
> occurring, the text editor will be deleted and may be accessed after
> deletion.
>
> At this point, we should probably dump all smart ranges and switch to non-
> smart range parsing, however the file that was just closed may be modified
> and not saved to disk, so ideally we just need to throw out that parse
> session and do it again from disk.
>
> Seeing as this covers a large body of code, should we thow an exception in
> the editor integrator, and catch them outside of the duchain parsing (ie.
> in the parse job). Then, the parse job can try again from disk.
>
> Does that sound like a good solution?
>
> Cheers,
> Hamish.
This sounds complicated and dangerous. If we throw an exception, we have to
make everything exception-safe, which would also mean that the kate
interfaces need to be exception-safe(just consider what happens when the
duchain or smart-lock isn't unlocked correctly).
Since the smart-ranges are dumped automatically through the notification
mechanism, I think we only need to do these steps:
1. The editor integrator must notice when a document is deleted, so it doesn't
try to access it any more and stops trying to create smart-ranges(This is the
main problem I think, because it's usually where the crash happens)
2. In the about 3 places where we actually handle smart-ranges directly, we've
got to make sure that the smart-lock is held as long as we handle direct
pointers to them, so they cannot be deleted without noticing
Locking issues between duchain-lock and smart-lock make this whole thing a bit
problematic though.
Do you see any more issues?
Greetings, David
More information about the KDevelop-devel
mailing list