https://bugs.winehq.org/show_bug.cgi?id=32515
Michael Müller michael@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |michael@fds-team.de
--- Comment #85 from Michael Müller michael@fds-team.de --- Yes, I have tested it on all three platforms my self. For more information: https://dev.wine-staging.com/patches/105/
It could be a bug in the Linux Kernel. The breakpoints are explicitly cleared in [1], but the dr6/dr7 registers [2] are copied as part of the memcpy in [3]->[4]->[5]. Anyway, this does not really matter from my point of view. Even if this is considered as a bug and gets fixed today, it would take a long time till every one uses a recent enough kernel. On FreeBSD the behavior of copying all registers might even be intentional. After all, this is a design decision of the operating system and there is no right or wrong solution. So, we might need this code anyway, even if it has a small effect on the performance, unless AJ would like to keep this bug (i.e. the wrong register values) unfixed. We could add an #ifndef __APPLE__ though, if the behavior is consistent across all OS X versions.
[1] http://elixir.free-electrons.com/linux/latest/source/arch/x86/kernel/process... [2] http://elixir.free-electrons.com/linux/latest/source/arch/x86/include/asm/pr... [3] http://elixir.free-electrons.com/linux/latest/source/kernel/fork.c#L1551 [4] http://elixir.free-electrons.com/linux/latest/source/kernel/fork.c#L505 [5] http://elixir.free-electrons.com/linux/latest/source/arch/x86/kernel/process...