According to Intel manuals, checking for AVX has to be done by checking AVX and OS XSAVE support in CPUID + XFEATURE_ENABLED_MASK via xgetbv. However, for strcasecmp, AVX is checked by testing the AVX bit in the cpuid. This makes systems using glibc-2.15 unbootable under current versions of Xen when the CPU supports AVX because Xen does not have XSAVE support. On these systems, strcasecmp fails with a SIGILL when executing vmovdqa. Bad check is here: http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/multiarch/strcmp.S;h=f93c83d7d469085029018dcf0d7f2eaadb05a44f;hb=HEAD#l108 Example of a good check: http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/dl-trampoline.S;h=6523c92945a59e6a5eefa3cfb2e0c58dfa99fd44;hb=HEAD#l137
I checked in a patch.
Actually, strcmp cannot have problems since the code only uses the AVX instruction encoding, not the YMM registers. Therefore any problem in that area must have a completely different reason. There is code which potentially uses the YMM registers and I added protection there.
*** Bug 260998 has been marked as a duplicate of this bug. *** Seen from the domain http://volichat.com Page where seen: http://volichat.com/adult-chat-rooms Marked for reference. Resolved as fixed @bugzilla.