331.20 on x86_64 breaks signal processing?

For me all drivers past 325.15 was breaking vmware-workstation 10.
And now, after some debugging I believe I have explanation.

vmware-vmx was crashing with SIGSEGV in Hostinfo_TouchBackDoor(). But it seems SIGSEGV in that code is perfectly normal, and supposed to be caught by vmware.
See https://github.com/drothlis/open-vm-tools/blob/master/lib/misc/hostinfoHV.c, and comments:

* Access the backdoor. This is used to determine if we are
* running in a VM or on a physical host. On a physical host
* this should generate a GP which we catch and thereby determine
* that we are not in a VM.

Actual spot where SIGSEGV was generated:

Dump of assembler code for function Hostinfo_TouchBackDoor:
   0x00000000006a4000 <+0>:     push   %rbx
   0x00000000006a4001 <+1>:     mov    $0x564d5868,%eax
   0x00000000006a4006 <+6>:     mov    $0xa9b2a797,%ebx
   0x00000000006a400b <+11>:    mov    $0xa,%ecx
   0x00000000006a4010 <+16>:    mov    $0x5658,%edx
=> 0x00000000006a4015 <+21>:    in     (%dx),%eax
   0x00000000006a4016 <+22>:    cmp    $0x564d5868,%ebx
   0x00000000006a401c <+28>:    sete   %al
   0x00000000006a401f <+31>:    pop    %rbx
   0x00000000006a4020 <+32>:    retq   
End of assembler dump.

Apparently, SIGSEGV wasn’t received by vmware-vmx, instead entire process gets killed.
It works as expected with driver 325.15, but not with newer drivers.

For a quick workaround I had to patch vmware-vmx binary to avoid calling that “in (%dx), %eax” that leads to expected SIGSEGV. But that’s just a crutch for the primary cause - SIGSEGV is not delivered to vmware-vmx when nvidia-drivers-331.20 is installed.

Any comments?

See previous thread and Gentoo bug report.

I had those freezing with 331.13. Isn’t 331.20 supposed to fix that?
I have no other problems at all, only SIGSEGV not passed to vmware-vmx.

Also see https://devtalk.nvidia.com/default/topic/638521/linux/gnome-terminal-problems-ctrl-c-and-exit/, it’s all the same issue.

And no, it’s not fixed in any recent driver, the only option is to use old drivers.

Mmm… Seems true. There’s nothing special about SIGSEGV.
Now I found that I can’t pause process with Ctrl-Z, seems SIGTSTP ignored due to same common reason.

We could reproduce reported issue with Opensuse 13.1 + vmware_workstation_10_0.

Reported issue( i.e driver preventing VMs from starting on some platforms), does not occur with our latest drivers. We will provide you the fixed driver in coming release.

This also hits me.
I use openSUSE 13.1 with nvidia 331.20, and i can’t use Ctr-Z any more.
And i also can’t start vmware guests any more.

I just upgraded my Linux notebook(*) to openSUSE 13.1 and I hit the same problem with Ctrl-C and Ctrl-Z apparently not working… Ghrr!

I was able to solve the issue by resetting the keyboard layout (first removing and then re-enabling the keyboard configuration tool on the panel system tray).

*) Dell Precision M6400, Quadro FX 3700M, Linux-x86_64, NVIDIA Driver 331.20, KDE 4.11.3