Which version of Commons Daemon are you using?

Gary

On Fri, May 24, 2019 at 10:33 AM Lode Leroy <[email protected]> wrote:

> Hi,
>
> I see frequent crashes in prunsrv.exe on Windows 10.
>
> Here is a stack trace from a minidump:
>
>      ntdll.dll!00007ff903af6e1e()    Unknown
>      AcLayers.dll!00007ff87cd77a56()    Unknown
>      prunsrv.exe!HeapFREE(void * hHeap, unsigned long dwFlags, void *
> lpMem) Line 71    C
>      prunsrv.exe!__apxPoolFreeCore(void * lpMem) Line 133    C
>      prunsrv.exe!apxFree(void * lpMem) Line 402    C
>      prunsrv.exe!__apxProcessCallback(stAPXHANDLE * hObject, unsigned int
> uMsg, unsigned __int64 wParam, __int64 lParam) Line 396    C
>      prunsrv.exe!apxCloseHandle(stAPXHANDLE * hObject) Line 498    C
>      prunsrv.exe!__apxPoolCallback(stAPXHANDLE * hObject, unsigned int
> uMsg, unsigned __int64 wParam, __int64 lParam) Line 190    C
>      prunsrv.exe!__apxPoolCallback(stAPXHANDLE * hObject, unsigned int
> uMsg, unsigned __int64 wParam, __int64 lParam) Line 184    C
>      prunsrv.exe!apxCloseHandle(stAPXHANDLE * hObject) Line 498    C
>      prunsrv.exe!apxHandleManagerDestroy(...) Line 291    C
>      prunsrv.exe!main(int argc, char * * argv) Line 1830    C
>
>
> I fixed it locally as follows, but I'm not sure if this is a good way to
> fix it.
>
>
> diff --git a/windows/src/handles.c b/windows/src/handles.c
> index bdd573d..b90f677 100644
> --- a/windows/src/handles.c
> +++ b/windows/src/handles.c
> @@ -286,6 +286,7 @@ apxHandleManagerDestroy()
>
>      if (--_st_sys_init == 0) {
>          hHeap = _st_sys_pool->hHeap;
> +        _st_sys_pool->fnCallback = NULL;
>          apxCloseHandle(_st_sys_pool);
>          /* Destroy the main Heap */
>          HeapDESTROY(hHeap);
> @@ -493,7 +494,8 @@ apxCloseHandle(APXHANDLE hObject)
>      if (IS_INVALID_HANDLE(hObject) || hObject->dwType ==
> APXHANDLE_TYPE_INVALID)
>          return FALSE;
>      /* Call the user callback first */
> -    (*hObject->fnCallback)(hObject, WM_CLOSE, 0, 0);
> +    if (*hObject->fnCallback)
> +        (*hObject->fnCallback)(hObject, WM_CLOSE, 0, 0);
>      /* Now go through the callback chain */
>      TAILQ_FOREACH(lpCall, &hObject->lCallbacks, queue) {
>          (*lpCall->fnCallback)(hObject, WM_CLOSE, 0, 0);
>

Reply via email to