Env.exePath returns "/memfd:roc_file_descriptor (deleted)" when running as script
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 72/100
Piste de recherche
Reproduisez le problème avec l’exemple roc test.roc fourni, puis lisez crates/roc_host/src/lib.rs autour de la ligne 432 ainsi que l’implémentation Rust liée de current_exe(). Comparez le contexte disponible de argv[0] et de Env.cwd, et vérifiez que Env.exePath indique le chemin absolu du script au lieu du chemin memfd.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Minimal Reproducible Example:
app [main] {
pf: platform "https://github.com/roc-lang/basic-cli/releases/download/0.16.0/O00IPk-Krg_diNS2dVWlI0ZQP794Vctxzv0ha96mK0E.tar.br",
}
import pf.Env
import pf.Path
main =
exePath = Env.exePath!
exePathStr = Path.display exePath
dbg exePathStr
Task.ok {}
Run as roc test.roc
Expected Behavior:
Output of /home/user/path/to/script/test.roc
Actual Behavior:
Output of /memfd:roc_file_descriptor (deleted)
Environment:
OS: Archlinux
Roc Version: roc nightly pre-release, built from commit 06996d8
Context
Discussed in https://roc.zulipchat.com/#narrow/channel/231634-beginners/topic/basic-cli.20debugging.20Env.2EexePath
Implementation (https://github.com/roc-lang/basic-cli/blob/918c1dcd2a863ea336e9fa0e70fa548f7107b6f0/crates/roc_host/src/lib.rs#L432) just defers to Rust's std::env::current_exe() (https://github.com/rust-lang/rust/blob/a8e75c53d0036b5d012cbc0ee5de17f8991fe60c/library/std/src/sys/pal/unix/os.rs#L406) which reads /proc/self/exe which seems to be invalid when running through roc <file>.
Somewhat related is https://github.com/roc-lang/roc/pull/7172 which fixed argv[0] to be set correctly.
Proposed solution is to use argv[0] and ideally combine with Env.cwd for a full absolute path (similar to https://github.com/rust-lang/rust/blob/a8e75c53d0036b5d012cbc0ee5de17f8991fe60c/library/std/src/sys/pal/unix/os.rs#L253) if /proc/self/exe can't be utilized.
Credit to @jwoudenberg and @lukewilliamboswell who did most of the work of putting this information together.
- Langage dominant
- Rust
- Étoiles
- 123
- Forks
- 46
- Merge moyen
- 7 h 43 min
- PR mergées (30 j)
- 16
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de roc-lang/basic-cli
-
Add `Path.parent`Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
roc-lang/basic-cli#482 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 45/100
roc-lang/basic-cli#455 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 32/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de roc-lang/basic-cli
Issues similaires
-
bug dependencies kind:fix priority: P3 ready-for-agent
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
shep-pm/shep#1318 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 2 jours
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
swc-project/swc-next#1165 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
Alive24/shea-symphony#574 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour