Логично предположить, что если неровный адрес приведён к типу (long*), то возможны неприятности. Что и произошло. Стандарт не нарушен:
J.2 Undefined behavior
The behavior is undefined in the following circumstances:
...
— Conversion between two pointer types produces a result that is incorrectly aligned (6.3.2.3).