Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[Bug]: sys.flags.debug is 1 whenever optimization is off

Ouverte Adaptée aux débutants
#1,213 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
75/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
java, python
Domaine
backend

Piste de recherche

La mauvaise valeur provient de l'argument debug dans SysModuleBuiltins.java (vers la ligne 697), qui est dérivé de PythonOptions.PythonOptimizeFlag. Lisez comment les autres champs de sys.flags y sont définis, puis exécutez l'extrait du rapport pour observer sys.flags.debug et subprocess._args_from_interpreter_flags(). C'est terminé lorsque sys.flags.debug vaut 0 par défaut et qu'aucun -d n'est émis, tandis que optimize et __debug__ restent inchangés.

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

Description

Describe the bug

sys.flags.debug is 1 whenever optimization is off. In CPython it is 0 unless the interpreter was started with -d (parser debug output), regardless of -O.

sys.flags is built in SysModuleBuiltins with debug derived from the optimize option:

https://github.com/oracle/graalpython/blob/63022137a797dc10251acac5460bb2e5b0a113cb/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/SysModuleBuiltins.java#L697

PInt.intValue(!language.getEngineOption(PythonOptions.PythonOptimizeFlag)), // debug

This looks like debug being conflated with __debug__.

The visible effect: subprocess._args_from_interpreter_flags() emits -d for every non-optimized run, so anything that re-executes sys.executable with the current interpreter flags passes -d. The most common case is multiprocessing with the spawn start method. An embedder whose python.Executable does not accept -d then fails to start the child, and the parent gets EOFError from Connection.recv().

Operating system

Linux

CPU architecture

x86_64

GraalPy version

25.x, embedded through the polyglot API. The line above is unchanged on current master.

JDK version

GraalVM JDK 25

Context configuration

Default options; python.PythonOptimizeFlag not set.

Steps to reproduce
import sys, subprocess
print(sys.flags.debug, sys.flags.optimize, __debug__)
print(subprocess._args_from_interpreter_flags())
Expected behavior

As on CPython 3.12 with no flags:

0 0 True
[]

Actual:

1 0 True
['-d']

(plus whatever other flags are configured).

Stack trace

None. The symptom shows up downstream, e.g. a spawned multiprocessing child exits during argument parsing and the parent raises EOFError.

Additional context

A fix would be to report debug as 0 (GraalPy has no -d equivalent), or to back it with a dedicated option if one is wanted. optimize and __debug__ are already correct.

Langage dominant
Python
Étoiles
1.7k
Forks
158
Merge moyen
8 h 31 min
PR mergées (30 j)
55

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

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.

Autres issues de oracle/graalpython

Toutes les issues de oracle/graalpython

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

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