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

Crash (UAF) on Teardown after Upload

Cerrado
#1,391 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp
Área
devtools

Línea de trabajo

Comienza con docs/use-after-free.md y compara su secuencia de Shutdown con las llamadas UploadNow y FlushAndTeardown del informe. Inspecciona los archivos WorkerThread.cpp y LogManagerImpl.cpp mencionados, así como las rutas de almacenamiento offline, mientras reproduces el Teardown con y sin Sleep. Se considera completado cuando el Shutdown termina sin un use-after-free ni un crash y aparece el trace MATSDK.PAL|Shut down.

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

Descripción

bug

Describe your environment.

PAL implementation: CPP11
SDK version: EVT-3.4.317.0

Steps to reproduce.
We make use of the SDK for a lightweight telemetry client we build which simply sends all events in one shot. I seem to be hitting issues where events are not uploaded and remain "offline" when looking at the mat_debug logs it looks as if the API is not behaving properly is it appears the SDK does not properly shutdown as i do not see the final MATSDK.PAL|Shut down in the mat-debug logs.

The way we use the SDK is LogEvent in batch and then during our app teardown is call UploadNow and FlushAndTeardown.

Ive posted a sample of our destructor which performs Upload once we've finished all of our LogEvent calls.

TelemetryManager::~TelemetryManager() noexcept
{
    status_t status = m_logManager->UploadNow();
    if (STATUS_SUCCESS != status)
    {
        OsConfigLogError(m_log, "Telemetry upload during shutdown failed. status=%d", status);
    }
    std::this_thread::sleep_for(std::chrono::microseconds(10)); // Minimal sleep required for upload to be triggered properly
    m_logManager->FlushAndTeardown();
    OsConfigLogInfo(m_log, "Telemetry shutdown complete.");
}

Without the sleep there it appears to not teardown properly (my log is missing the final Telemetry shutdown complete) but with the sleep there, it works just fine and the mat-debug logs also show the final MATSDK.PAL|Shut down.

mat-debug.log (with sleep)
2025-11-12T22:55:53.317Z|00008792|W|MATSDK|upload  = 819 ms
2025-11-12T22:55:53.317Z|00008792|W|MATSDK|abort   = 0 ms
2025-11-12T22:55:53.317Z|00008792|W|MATSDK|stop    = 1 ms
2025-11-12T22:55:53.317Z|00008792|W|MATSDK|worker  = 0 ms
2025-11-12T22:55:53.317Z|00008792|W|MATSDK|storage = 0 ms
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.LogManager|Telemetry system stopped
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.RecordStats|RecordStats destroyed: 13
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.RecordStats|RecordStats destroyed: 14
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.RecordStats|RecordStats destroyed: 15
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.RecordStats|RecordStats destroyed: 16
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.RecordStats|RecordStats destroyed: 17
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.StorageHandler|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/OfflineStorageHandler.cpp:62
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.StorageHandler|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/OfflineStorageHandler.cpp:62
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.LogManager|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/api/LogManagerImpl.cpp:855
2025-11-12T22:55:53.317Z|00008792|D|EventsSDK.LogManager|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/api/LogManagerImpl.cpp:855
2025-11-12T22:55:53.317Z|00008792|D|MATSDK.PAL|Shutting down...
2025-11-12T22:55:53.317Z|00008792|I|MATSDK.PAL|queue item=0x7ffc4600e8e0
2025-11-12T22:55:53.317Z|00008792|D|MATSDK.PAL|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/pal/WorkerThread.cpp:81
2025-11-12T22:55:53.317Z|00008792|D|MATSDK.PAL|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/pal/WorkerThread.cpp:81
2025-11-12T22:55:53.317Z|00008793|D|MATSDK.PAL|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/pal/WorkerThread.cpp:189
2025-11-12T22:55:53.317Z|00008793|D|MATSDK.PAL|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/pal/WorkerThread.cpp:189
2025-11-12T22:55:53.317Z|00008792|I|MATSDK.PAL|Shut down
(END)
mat-debug.log (no sleep)
2025-11-12T23:08:49.395Z|00010035|I|MATSDK|offline records=340, pending uploads=0
2025-11-12T23:08:49.395Z|00010035|D|EventsSDK.MemoryStorage|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/MemoryStorage.cpp:467
2025-11-12T23:08:49.395Z|00010035|D|EventsSDK.MemoryStorage|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/MemoryStorage.cpp:467
2025-11-12T23:08:49.395Z|00010035|D|EventsSDK.Storage|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/OfflineStorage_SQLite.cpp:925
2025-11-12T23:08:49.395Z|00010035|D|EventsSDK.Storage|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/OfflineStorage_SQLite.cpp:925
2025-11-12T23:08:49.497Z|00010035|D|EventsSDK.MemoryStorage|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/MemoryStorage.cpp:467
2025-11-12T23:08:49.499Z|00010035|D|EventsSDK.MemoryStorage|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/MemoryStorage.cpp:467
2025-11-12T23:08:49.499Z|00010035|D|EventsSDK.Storage|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/OfflineStorage_SQLite.cpp:925
2025-11-12T23:08:49.499Z|00010035|D|EventsSDK.Storage|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/OfflineStorage_SQLite.cpp:925
2025-11-12T23:08:49.500Z|00010035|I|MATSDK|offline records=340, pending uploads=0
2025-11-12T23:08:49.500Z|00010035|D|EventsSDK.MemoryStorage|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/MemoryStorage.cpp:467
2025-11-12T23:08:49.500Z|00010035|D|EventsSDK.MemoryStorage|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/MemoryStorage.cpp:467
2025-11-12T23:08:49.500Z|00010035|D|EventsSDK.Storage|LOCKGUARD   lockin at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/OfflineStorage_SQLite.cpp:925
2025-11-12T23:08:49.500Z|00010035|D|EventsSDK.Storage|LOCKGUARD   locked at /workspaces/azure-osconfig/build2/adapters/mc/telemetry-external-prefix/src/telemetry-external-build/lib/1dscpplib-prefix/src/1dscpplib/lib/offline/OfflineStorage_SQLite.cpp:925
(END)

Ive also come across the article How to Not Crash on Shutdown in case of static LogManager instance
which sounds eerily familiar to this issue but even after using the suggestion (Flush, PauseActivity, WaitPause and finally FlushAndTeardown), the behavior does not change.

What is the expected behavior?
I expect, that even without the sleep, the application shuts down properly and mat-debug logs contain the MATSDK.PAL|Shut down trace at the end.

What is the actual behavior?
Without the sleep, it appears to crash the SDK

Additional context.
N/A

Lenguaje dominante
C
Estrellas
104
Forks
67
Merge medio
2 d 15 h
PR fusionados (30 d)
10

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 microsoft/cpp_client_telemetry

Todos los issues de microsoft/cpp_client_telemetry

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.