diff --git a/app/vmselect/promql/timeseries_test.go b/app/vmselect/promql/timeseries_test.go
index b77433ef00..b0d14edb60 100644
--- a/app/vmselect/promql/timeseries_test.go
+++ b/app/vmselect/promql/timeseries_test.go
@@ -4,6 +4,7 @@ import (
 	"os"
 	"reflect"
 	"testing"
+	"unsafe"
 
 	"github.com/VictoriaMetrics/VictoriaMetrics/lib/storage"
 )
@@ -24,6 +25,26 @@ func TestMarshalTimeseriesFast(t *testing.T) {
 		if !reflect.DeepEqual(tss, tss2) {
 			t.Fatalf("unexpected timeseries unmarshaled\ngot\n%#v\nwant\n%#v", tss2[0], tss[0])
 		}
+
+		// Check 8-byte alignment.
+		// This prevents from SIGBUS error on arm architectures.
+		// See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3927
+		for _, ts := range tss2 {
+			if len(ts.Values) == 0 {
+				continue
+			}
+
+			// check float64 alignment
+			addr := uintptr(unsafe.Pointer(&ts.Values[0]))
+			if mod := addr % unsafe.Alignof(ts.Values[0]); mod != 0 {
+				t.Fatalf("mis-aligned; &ts.Values[0]=%p; mod=%d", &ts.Values[0], mod)
+			}
+			// check int64 alignment
+			addr = uintptr(unsafe.Pointer(&ts.Timestamps[0]))
+			if mod := addr % unsafe.Alignof(ts.Timestamps[0]); mod != 0 {
+				t.Fatalf("mis-aligned; &ts.Timestamps[0]=%p; mod=%d", &ts.Timestamps[0], mod)
+			}
+		}
 	}
 
 	// Single series