Yes, definitely.

You can also try setting -s SAFE_HEAP=1 to automatically assert on
alignment and other memory access errors.
https://kripken.github.io/emscripten-site/docs/porting/Debugging.html

On Mon, Dec 18, 2017 at 12:01 AM, Mark Sibly <[email protected]> wrote:

> Actually, think I know what's going on.
>
> I have a custom operator new() which does not necessarily return 8 byte
> aligned memory (I think)?
>
>  Would this be enough to cause problems in asm.js but not in wasm?
>
>
>
> On Mon, Dec 18, 2017 at 10:58 AM, Mark Sibly <[email protected]>
> wrote:
>
>> > what does the structure definition look like?
>>
>> Well, it's the output of a transpiler so it's a bit of a mess. But the
>> basic idea is:
>>
>> struct GCNode{
>> GCNode *succ,*pred;
>> char pad[2];
>> char state;
>> char flags;
>>
>> virtual ~GCNode(){
>> }
>> };
>>
>> struct Timer : GCNode{
>>
>> Timer( double hertz ){
>> period=1.0/hertz;
>> }
>>
>> double period;
>> };
>>
>> ...where 'Timer' is the user class causing problems and GCNode is a
>> system class.
>>
>> When built by the transpiler, the end result is that the write to
>> 'period' seems to be accidentally writing to 'state '- so it's possibly
>> worth noting it's therefore not an asm.js alignment issue, the compiler is
>> producing valid but incorrect code. However, if you build/run this as
>> is, it works fine. I have only encountered the problem when running the
>> output of the transpiler, and all attempts to c++-ify an example have
>> failed so far. It's a real heisenbug!
>>
>> The 'period' field is indeed misligned for a double, as there is malloc
>> size+virtual function table (8 bytes) at start of allocation. And adding an
>> int 'pad' field just before 'period' fixes the problem.
>>
>> Could be the transpiler I guess, but I haven't had this issue with
>> mingw32 or android/ios 32 bit builds - or even wasm. Just asm.js builds.
>>
>> On Mon, Dec 18, 2017 at 9:56 AM, Brion Vibber <[email protected]> wrote:
>>
>>> In asm.js code, all memory loads and stores must be aligned (wasm does
>>> not have this limitation).
>>>
>>> Normally alignment rules on structs should 'just work' I think -- what
>>> does the structure definition look like?
>>>
>>> -- brion
>>>
>>> On Dec 17, 2017 12:46 PM, "Mark Sibly" <[email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> I am having some intermittent problems with what appears to be float
>>>> point double alignment, where writing to a floating point double field ends
>>>> up writing to the wrong location. This has been solved in every case so far
>>>> by manually '8 byte aligning' the double field.
>>>>
>>>> Also, this only seems to be happening when generating asm.js 'apps' -
>>>> so far, there have been no problems with wasm.
>>>>
>>>> Unfortunately, this is happening in a translator I am writing, and
>>>> every attempt I have made so far to isolate some reproducable c++ code has
>>>> failed!
>>>>
>>>> Just wondering of this was a known issue of some kind, or if anyone
>>>> else has had similar problems? With a bit of luck I'll be able to retire
>>>> the asm.js target soon in favour of wasm in which case it wont matter, but
>>>> I just thought I'd check...
>>>>
>>>> Bye,
>>>> Mark
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "emscripten-discuss" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "emscripten-discuss" group.
>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>> pic/emscripten-discuss/l_P-aW8ZYm4/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to