emscripten-core / emscripten-core/emscripten

warning: indirection of non-volatile null pointer will be deleted, not trap

Offen
#12,876 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
wontfix
Vorherrschende Sprache
C++
Sterne
27.6k
Forks
3.6k
Ø Merge
1 T. 14 Std.
Gemergte PRs (30 T.)
125

Beschreibung

STR:
```c
#include

int main()
{
printf("Data at address zero: %x\n", *(int*)0);
}
```

```
E:\code\tgifelse>emcc a.c -o a.js
a.c:5:39: warning: indirection of non-volatile null pointer will be deleted, not trap [-Wnull-dereference]
printf("Data at address zero: %x\n", *(int*)0);
^~~~~~~~
a.c:5:39: note: consider using __builtin_trap() or qualifying pointer with 'volatile'
1 warning generated.

E:\code\tgifelse>node a.js
Data at address zero: 63736d65
```

This warning looks odd, because the memory load did not get deleted like the warning threatened to do.

The program behaved like I expected it to: load and print the u32 at address zero, which contains the magic bytes for Emscripten stack check.

I wonder if that LLVM warning message should somehow be adjusted for Wasm? Maybe `"warning: indirection of non-volatile null pointer will actually (attempt to) load from memory address zero, and not trap"`?

(We do already have the `-s SAFE_HEAP=1` build mode that will add the necessary checks for this for correctness checks)

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit dem emcc-Befehl und der minimalen C-Reproduktion und verfolge dann, wie die Nullzeiger-Dereferenzierungswarnung während der Wasm-Kompilierung ausgegeben wird. Abgeschlossen ist die Untersuchung, wenn festgestellt wurde, ob die Warnung den beobachteten Ladevorgang von Adresse null korrekt beschreibt und das angemessene Verhalten für dieses Ziel identifiziert wurde.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c, wasm
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.