Sounds like you're onto something there.  I was not aware of VEX-prefixed
AVX instructions.  I thought it seemed a little fishy that the LDS
instruction would be used in that disassembly dump and also that it
appeared that the actual instruction was 8 bytes long from your successful
single stepping of the code.  From reading the Wikipedia article on the
subject, it definitely sounds like what you are experiencing.  If I
understood what I read correctly, 32-bit versus 64-bit mode can have an
effect on which instructions are valid, regardless of whether the processor
supports 64 bit or not.  So if you're kernel is running in 32 bit mode,
then certain AVX instructions will be interpreted differently than if the
kernel is running 64 bit.

http://en.wikipedia.org/wiki/VEX_prefix

Best regards,

Element


On Fri, Aug 23, 2013 at 4:57 AM, a...@gratin.org <a...@gratin.org> wrote:

> well,
> I installed glib as --universal, meaning that it contains both 32 bits and
> 64 bits binaries. And actually, I removed the 64 bit binary (using the lipo
> function), because Director is a 32 bits application and all Xtras
> (plugins) are also. So we are really running in 32 bit here. Even on
> MacOSX10.8, which is a 64 bits kernel, but which can run 32 bits
> applications.
>
> And, this instruction does _not_ crash on my MacOSX10.8 machine, and
> _does_ crash on another MacOSX10.8 machine.
>
> I found another possibility : AVX. I found on the net (
> http://stackoverflow.com/questions/16389207/llvm-jit-tutorial-code-crashes-with-simple-parameterized-function-why)
> a similar SIGILL LDS, which was actually caused by an VEX-prefixed
> AVX instruction, which neither the processor nor the disassembler knew
> about, and interpreted as an LDS. And AVX is available on my machine, and
> not on the two crashing machines…
>
> I'm investigating this now. Trying to compile glib without AVX.
>
> Le 23 août 2013 à 00:59, Element Green <jgr...@users.sourceforge.net> a
> écrit :
>
> From what I can see, that instruction is indeed an LDS instruction, which
> from what I read is invalid when in 64 bit mode.  It sounds like Mac OSX
> can be run in either 32 bit or 64 bit mode, so perhaps that is the
> difference between working systems and non-working systems?  I didn't
> bother decoding the instruction further than seeing that it was an LDS
> instruction.  If that is indeed what is happening, then some sort of
> compiler setting resulted in that instruction.  Probably need to make sure
> the proper compiler switches are being used for the intended architectures.
>
>
>
> _______________________________________________
> fluid-dev mailing list
> fluid-dev@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/fluid-dev
>
>
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to