On 01.06.2018 10:11, wwwald wrote:
> Hi!
>
> I've been running Wikidpad 2.4 alpha01 for some time now on Windows 10 +
> Python 3.5 + wxPython 4.0.1.
>
> Every now and then, Wikidpad will slow down & freeze, requiring me to kill
> the process and restart. Running right now, I notice that the background
> job count is quite high (48 currently, increasing) and doesn't decrease as
> expected.
The background jobs do not instantly decrease as many of them produce a new
background job which replaces the previous one because the processing of a wiki
page happens in phases (attributes; other wiki language features; search index
if enabled). All background jobs are processed by a single thread which is
probably not the point of failure.
> The error log does show a number of errors (I've listed some below), but
> nothing that systematically pops out as causing this
>
> How can I dig deeper into what background processing is happening?
>
> wwwald
>
>
>
> - WindowsHacks.py > _shellFileOp, line 315: ValueError: embedded null
> character
> - HtmlExporter.py > exportHtmlMultiFile, line 894: TypeError: a
> bytes-like object is required, not 'str'
> This probably has to do with the Py3 transition.
> - WikiTreeCtrl.py > OnRightButtonUp, line 2535: AttributeError:
> 'WikiTreeCtrl' object has no attribute 'PopupMenuXY'
> - WikiTxtDialogs.py > saveFile, line 352: AttributeError: 'Image' object
> has no attribute 'SetOptionInt'
> - Utilities.py > end, line 398:
> pwiki.WikiExceptions.DeadBlockPreventionTimeOutError
This is to me the most "suspicious" error. If this error happens, some thread
was blocked very long (by default for more than 30 minutes).
To investigate this further you could edit "Consts.py", about at line 35 there is:
DEADBLOCKTIMEOUT = 1800
and reduce the number of seconds until a DeadBlockPreventionTimeOutError is
thrown to a lower value like e.g. 60 seconds, maybe 30, but not lower. This
should be a good limit to distinguish if the blocking is normal or too long.
After that change there will probably be more DeadBlockPreventionTimeOutError
exceptions. With full tracebacks of these the failure can (hopefully) by found.
Michael