[p5.js 2.0+ Bug Report]: randomGaussian() leaks its spare value across p5 instances, breaking seeded determinism
Los mantenedores suelen responder en 2 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript
- Área
- frontend
Línea de trabajo
Comienza en src/math/random.js e inspecciona la prueba existente omitida de independencia del modo de instancia. Reproduce las llamadas intercaladas con semilla usando dos instancias de p5 y, a continuación, ejecuta las pruebas relevantes de números aleatorios. La tarea estará completada cuando las instancias produzcan secuencias deterministas independientes y la prueba de regresión pase.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Most appropriate sub-area of p5.js?
Math
p5.js version
2.x main (4b096e2)
Actual vs expected behavior
The randomSeed() reference promises that a constant seed "makes these functions produce the same results each time a sketch is run", explicitly naming randomGaussian(). That breaks as soon as two p5 instances exist on a page.
randomGaussian() uses the Marsaglia polar method, which produces values in pairs. The flag that says "a spare value is cached" lives on the instance (this._gaussian_previous), but the spare value itself lives in module scope (let y2 = 0; in src/math/random.js). With two instances, B's spare overwrites A's, and A's next call returns B's value.
Executed repro (both instances seeded, one interleaved call on instance B):
A alone : -0.2050, -0.3410, 0.3986, -1.4309
A interleaved: -0.2050, -0.9404, 0.3986, -1.4309
Same seed, different sequence. The existing test suite even contains a skipped "instance mode / should be independent" block asserting exactly this independence. PR #1681 (2015) made _gaussian_previous per-instance but left y2 module-scoped, which is the remaining half of that fix.
Steps to reproduce
Outputs above are from executed runs against main, two instances sharing the prototype as in instance mode.
Note
I have a fix ready (store the spare as this._gaussian_y2) with a regression test, mutation-tested against main. Filing for approval first per the contributing guide; will open the PR once approved.
- Lenguaje dominante
- JavaScript
- Estrellas
- 24.1k
- Forks
- 3.9k
- Merge medio
- 3 d 17 h
- PR fusionados (30 d)
- 33
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de processing/p5.js
-
[p5.js 2.0+ Bug Report]: SVG importer does not respect preserveAspectRatio="none" for <symbol>/<use>Posiblemente ocupada @Danyccsf la tomó hace 1 día. AbiertoArea:Core p5.js 2.0+
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
processing/p5.js#9257 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
Add unit tests for noiseDetail()Posiblemente ocupada @Pcmhacker-piro la tomó hace 3 días. AbiertoArea:Math Enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
processing/p5.js#9253 ·
Los mantenedores suelen responder en 2 días
-
[p5.js 2.0+ Bug Report]: storeItem() validation branches are missing `return`, so bad input throws a TypeError or is stored anywayPosiblemente ocupada @iUjjwalRaj la tomó hace 3 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
processing/p5.js#9242 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
processing/p5.js#9241 ·
Los mantenedores suelen responder en 2 días
-
[p5.js 2.0+ Bug Report]: Typo in Spanish reference documentation for ellipseMode()Posiblemente ocupada @cgutierrezval la tomó hace 6 días. AbiertoInternationalization p5.js 2.0+
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
processing/p5.js#9231 · 3 comentarios ·
Los mantenedores suelen responder en 2 días
Todos los issues de processing/p5.js
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
documentation good first issue help wanted
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
zmo2s/agent-toolbox#23 ·
-
[Bug]: [MCP/CLI] Bare loopback IP addresses (127.0.0.1:port) and hosts with ports fail to navigate due to erroneous scheme inferencePosiblemente ocupada @alok-108 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/playwright#43263 ·
Los mantenedores suelen responder en 1 día