`RULE-25-21`, others: Consider something like a library TracesToExplicit<T>

Abierto
#848 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

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

Línea de trabajo

Comienza examinando la implementación y las pruebas de RULE-25-21 y el tratamiento de las operaciones atomic_*_explicit. Define los casos de seguimiento hacia atrás compatibles para asignaciones, parámetros y llamadas o retornos de funciones, y determina después cómo deben informarse las rutas no válidas. Se considera terminado cuando la biblioteca de tracing propuesta gestiona raíces aceptables y rechaza los valores que no pueden rastrearse hasta memory_order_seq_cst.

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

Descripción

Difficulty-Low enhancement Impact-Low
Affected rules
  • RULE-25-21
  • Likely others, haven't researched
Description

Rule 25-21 requires that the atomic_*_explicit operations use the memory order memory_order_seq_cst.

It would probably be overly restrictive to require an explicit inline written memory_order_seq_cst at the call site. However, it's probably too accepting to merely allow any dynamically computed value. Ideally, we can support basic indirection like variable assignment, parameter values, function calls/returns, and report cases that don't trace back to an acceptable root.

Doing this as a typical flow analysis is backwards. We can easily track flow from memory_order_seq_cst exprs to atomic_*_explicit calls, but the existence of such a flow doesn't preclude that invalid values also flow to the call. Alternatively, there are potential performance issues if we consider all exprs which are not memory_order_seq_cst to be sources in the flow analysis.

Wouldn't be terribly hard to write a library such as TracesToExplicit<T> that is a very simple global flow analysis made for this purpose, starting from sinks and doing only very obvious backwards tracking of values through function calls and variable assignments. If that doesn't track back to an acceptable value, we can report it. Ideally we can report it as a path-problem though this makes such a library more complex to implement.

Lenguaje dominante
CodeQL
Estrellas
227
Forks
82
Merge medio
6 d 7 h
PR fusionados (30 d)
9

Guía de contribución

Abrir la guía de contribución

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 github/codeql-coding-standards

Todos los issues de github/codeql-coding-standards

Issues similares

Más issues de DevTools

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.