Segmentation fault with many go routines

Abierto
#13 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
28/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
python
Área
backend

Línea de trabajo

Empieza ejecutando la reproducción proporcionada con 10,000 goroutines usando los intérpretes de Python y las versiones de offset/fibers indicados. Rastrea si el segmentation fault se origina en offset, fibers o en su interacción, y después añade una prueba de regresión para la reproducción. Se considera terminado cuando el programa ya no se bloquea y produce 10001.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

Running this program.

from offset import maintask, run, go, makechan

def gopher(left, right):
    value = right.recv()
    left.send(value + 1)

def starter(chan):
    chan.send(1)

@maintask
def main():
    leftmost = makechan()
    right = leftmost
    left = leftmost
    for _ in range(10000):
        right = makechan()
        go(gopher, left, right)
        left = right
    go(starter, right)
    print(leftmost.recv())

if __name__ == "__main__":
    run()

I get:

$ python gophers.offset.py
zsh: segmentation fault  python gophers.offset.py

The output I expected was 10001.

Tested with

  • Interpreters
    • Python 2.7.3 (87aa9de10f9ca71da9ab4a3d53e0ba176b67d086, Feb 03 2014, 13:03:18)[PyPy 2.2.1]
    • Python 3.3.3 (default, Dec 22 2013, 19:33:55)
  • offset library from github
  • fibers 0.3.0

I don't know if this is caused by the offset library, fibers library or any other combination so I decided to start from here. :)

Lenguaje dominante
Python
Estrellas
380
Forks
15
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de benoitc/offset

Todos los issues de benoitc/offset

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.