3739032163: 89 d3 mov %edx,%ebx
3739032165: 4c 0f 44 e0 cmove %rax,%r12
3739032169: 48 8b 87 68 09 00 00 mov 0x968(%rdi),%rax --> Segmentation fault
3739032170: 48 85 c0 test %rax,%rax
3739032173: 74 02 je 3739032177 <XInternAtom+0x37>

in the previous piece of code inside an application, the "mov 0x968(%rdi),%rax" instruction causes a segmentation fault !!!!!!!!!!!!!!
how do you think that "mov 0x968(%rdi),%rax" can causes a segmentation fault !!! it only puts a certain value inside the register %rax which should never cause a segmentation fault bu this what happens when debugging the application and start to step by step running for every instruction line a segmentation fault happens after executing this command and I'm going out of my mind!!! how this could happen !!! anyboady can help?

Note: this code is inside libX11.so.6 (64bit) and it's the save in every version of libX11.so.6 and causes the same segFault.