Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Calling Gc.compact() in cppia collects the current CppiaClosure/ScriptCallable?

Abierto
#1,196 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
22/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
cpp
Área
backend

Línea de trabajo

Comienza reproduciendo la secuencia reportada desde hxcpp_set_top_of_stack() y hxRunLibrary() a través de Module.fromData, module.boot(), Type.createInstance, Reflect.callMethod y Gc.compact(). Compara el fallo después de que el método cppia retorna con el caso en que se elimina compact(); se considera terminado cuando la closure sigue siendo utilizable o se han establecido la limitación admitida y la corrección necesaria.

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

Descripción

I am not even sure if the title correctly describes the issue. But it seems to be the case for what I am seeing.

Looking at the stack trace below it seems like the function variable magically becomes null, while it was still usable 2 lines above (function->runFunctionClosure(ctx);)

Image

What I notice is that there is a cpp.vm.Gc.compact() call inside the cppia function. Removing such call seems to fix the problem.

The setup is a bit complex to be isolated. So for now I am going to first describe the setup with text and see if there any insights and I hope it is some obvious gc usage issue. The following logic all happens in the same non-haxe thread:

  1. Haxe is used as a library in a c++ project and it is initialized with:
    hxcpp_set_top_of_stack();
    const char *err = hxRunLibrary();
    
  2. cppia bytecode is loaded and stored in a Haxe static variable
    module = cpp.cppia.Module.fromData(bytes);
    module.boot();
    
  3. a class defined in cppia is initialized (Type.createInstance(module.resolveClass(name))) and a instance method is invoked via Reflect.callMethod
  4. in such instance method cpp.vm.Gc.compact() is called
  5. the crash in the screenshot happens, after the cppia method returns

Info:
macos: 15 (arm64)
haxe: 4.3.6
hxcpp: git (96875093ec43e48dc2e1da95b8730e0c122ae017)

Lenguaje dominante
C++
Estrellas
330
Forks
232
Merge medio
3 d 5 h
PR fusionados (30 d)
3

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 HaxeFoundation/hxcpp

Todos los issues de HaxeFoundation/hxcpp

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.