emscripten-core / emscripten-core/emscripten

runtime_debug/checkInt overly aggressive when ASSERTIONS=2

Ouverte
#19,655 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
C++
Étoiles
27.6k
Forks
3.6k
Merge moyen
1 j 14 h
PR mergées (30 j)
125

Description

When I run my emscripten app for debugging after compiling it with ASSERTIONS=2, the app aborts after calling stat, and after calling fillMouseEventData.

  • In stat, the stat.rdev instance member is 'undefined', which causes an abort. (library_workerfs.js:85)
  • In fillMouseEventData, 'e.clientX - rect.left' resolves to a float, not an int, which also causes an abort. (library_html5.js:439)

I believe this pull request is the breaking change for me: https://github.com/emscripten-core/emscripten/pull/19251

I've reverted to ASSERTIONS=1, but I'd love to debug with a higher assertion level.

Console output
t RuntimeError: Aborted(Assertion failed: attempt to write non-integer (undefined) into integer heap)
at abort (cskyclasses-debug.js:836:10)
at assert (cskyclasses-debug.js:615:3)
at checkInt (cskyclasses-debug.js:1074:2)
at checkInt32 (cskyclasses-debug.js:1085:27)
at setValue_safe (cskyclasses-debug.js:5460:3)
at SAFE_HEAP_STORE (cskyclasses-debug.js:564:2)
at Object.doStat (cskyclasses-debug.js:4697:3)
at ___syscall_stat64 (cskyclasses-debug.js:5807:19)
at fstatat (fstatat.c:148:9)
at stat (stat.c:6:9)

Version of emscripten/emsdk:
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.41 (71634e036d20209a5d81c2b2171e145b44de1e12)
clang version 17.0.0 (https://github.com/llvm/llvm-project 88421ea973916e60c34beb26597a5fc33f83dd8f)
Target: wasm32-unknown-emscripten
Thread model: posix

Full link command and output with -v appended:
Output of link is attached.
ssww_emcc_link_log_2023-06-19.txt

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par checkInt dans le runtime généré et examinez les emplacements signalés dans library_workerfs.js:85 et library_html5.js:439. Reproduisez les chemins stat et fillMouseEventData avec ASSERTIONS=2 ; c’est terminé lorsque ces appels n’abandonnent plus face aux valeurs undefined ou float signalées.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, wasm
Domaine
compilers
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.