boost.coroutine2 cannot generate dump
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- cpp
- Área
- operating-systems
Línea de trabajo
Comience reproduciendo el ejemplo de Windows proporcionado con y sin boost.coroutine2, centrándose en CreateMiniDump, MyUnhandledExceptionFilter y CoroutineFunction. Compare el comportamiento del manejo de excepciones en ambos casos e inspeccione la implementación de coroutine2 involucrada en la ruta que falla. Se considera que el trabajo está terminado cuando se haya identificado la causa y se haya proporcionado una solución probada o una limitación documentada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
windows, using boost.coroutine2, cannot generate dump (using mini dump) if a crash occurs in the coroutine function. As long as boost.coroutine2 is not used, the dump file can be generated. Is there something I'm missing?
Here is the code example:
#include <boost/coroutine2/all.hpp>
#include <Windows.h>
#include <dbghelp.h>
#include <iostream>
#pragma comment(lib, "Dbghelp.lib")
void CreateMiniDump(EXCEPTION_POINTERS* pep) {
HANDLE hFile = CreateFile(
"crashdump.dmp", // File name
GENERIC_WRITE, // Desired access
0, // Share mode
NULL, // Security attributes
CREATE_ALWAYS, // Creation disposition
FILE_ATTRIBUTE_NORMAL, // Flags and attributes
NULL // Template file
);
if (hFile != INVALID_HANDLE_VALUE) {
MINIDUMP_EXCEPTION_INFORMATION mdei;
mdei.ThreadId = GetCurrentThreadId();
mdei.ExceptionPointers = pep;
mdei.ClientPointers = FALSE;
BOOL rv = MiniDumpWriteDump(
GetCurrentProcess(),
GetCurrentProcessId(),
hFile,
MiniDumpNormal,
&mdei,
NULL,
NULL
);
if (rv == FALSE) {
std::cerr << "MiniDumpWriteDump failed: " << GetLastError() << std::endl;
}
CloseHandle(hFile);
}
}
// Exception filter to handle crashes
LONG WINAPI MyUnhandledExceptionFilter(EXCEPTION_POINTERS* pExceptionPointers) {
CreateMiniDump(pExceptionPointers);
return EXCEPTION_EXECUTE_HANDLER;
}
#pragma optimize("", off)
void CoroutineFunction(boost::coroutines2::coroutine<void>::push_type& yield) {
// Example code that may crash
std::cout << "CoroutineFunction Begin\n";
int* p = nullptr;
*p = 0; // This will cause a crash
std::cout << "CoroutineFunction End\n";
}
#pragma optimize("", on)
int main() {
SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);
//
//int* p = nullptr;
//*p = 1000;
// Use Boost.Coroutine2
try {
boost::coroutines2::coroutine<void>::pull_type source(
[](boost::coroutines2::coroutine<void>::push_type& sink) {
CoroutineFunction(sink);
}
);
}
catch (const std::exception& e) {
std::cout << "Exception: " << e.what() << std::endl;
}
std::cout << "sssssssssssssssssssssssssssss\n";
char ch;
std::cin >> ch;
return 0;
}
- Lenguaje dominante
- C++
- Estrellas
- 139
- Forks
- 44
- 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
- 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 boostorg/coroutine2
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 50/100
boostorg/coroutine2#54 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 20/100
boostorg/coroutine2#49 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
boostorg/coroutine2#37 ·
Todos los issues de boostorg/coroutine2
Issues similares
-
agent:WSL bug code-review linux LOW
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
[raylib] update to 6.2Abiertocategory:port-update
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 2 días
-
improvement ui
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ihhub/fheroes2#11062 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
enhancement question
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
DarkStarSystems/pcons#224 ·
Los mantenedores suelen responder en 1 día