I looked at the cpuid code in yassl, and while it tries to safely check
for the cpuid instruction first, it does it in a broken way.

it currently sets up a signal handler to catch the illegal instruction
if it isn't supported, by using signal(), but unfortunately that is not
supported in multithreaded programs, which probably almost all libmysql
using programs are.  It would be MUCH safer to actually parse
/proc/cpuinfo to check if the cpuid instruction is listed there as
supported before trying to use it, and only then try to find out the
cpu type in the system.

Running the current yassl cpuid code without threads, works as expected.
Running it with threads causes the signal to go to the parent thread
rather than the one running cpuid (with the signal handler set), and the
main thread terminals with 'illegal instruction' which aborts the whole
program.

--
Len Sorensen


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to