https://bugs.winehq.org/show_bug.cgi?id=46472
--- Comment #35 from tjb troyb@us.ibm.com --- I corrected my pilot error in intercepting peeks and pokes. The code I used is added to server/ptrace.c as follows, where ptrace call is replaced with ptraced for ever POKEUSER and PEEKUSER. I attached the results for the crash case (new hw breakpoint code in 4.19) and for the successful launch case (same 4.19 kernel with hw breakpoint reverted to previous behavior).
#if 1 long ptraced(enum __ptrace_request request, pid_t pid, void *addr, void *data)
{ if (request == PTRACE_POKEUSER) fprintf(stderr,"PTRACE_POKEUSER pid %x addr %p data %p\n",pid,addr,data); else if (request == PTRACE_PEEKUSER) fprintf(stderr,"PTRACE_PEEKUSER pid %x addr %p data %p\n",pid,addr,data);
return(ptrace(request,pid,addr,data)); } #else #define ptraced(request,pid,addr,data) ptrace(request,pid,addr,data) #endif