bsod

0x00000018: REFERENCE_BY_POINTER

La verificación de errores REFERENCE_BY_POINTER tiene un valor de 0x00000018. Esto indica que el recuento de referencias de un objeto es ilegal para el estado actual del objeto.

REFERENCE_BY_POINTER Parámetros

ParámetroDescripción
1Tipo de objeto cuyo recuento de referencias se está reduciendo.
2Objeto cuyo recuento de referencias se está reduciendo.
3Reservado
4Reservado

Causa

El recuento de referencias de un objeto es ilegal para el estado actual del objeto. Cada vez que un controlador utiliza un puntero a un objeto, llama a una rutina del núcleo para aumentar el recuento de referencias del objeto en uno. Cuando el controlador termina con el puntero, llama a otra rutina del núcleo para disminuir el recuento de referencias en uno.

Los conductores deben hacer coincidir las llamadas con las rutinas que aumentan ( referencia ) y disminuyen ( desreferencia ) el recuento de referencia. Esta verificación de errores se debe a una inconsistencia en el recuento de referencias del objeto. Normalmente, la inconsistencia es causada por un controlador que disminuye el recuento de referencias de un objeto demasiadas veces, realizando llamadas adicionales que desreferencian el objeto. Esta verificación de errores puede ocurrir porque el recuento de referencias de un objeto llega a cero mientras todavía hay identificadores abiertos para el objeto. También puede ocurrir cuando el recuento de referencias del objeto cae por debajo de cero, haya o no identificadores abiertos para el objeto.

Resolución

Asegúrese de que el controlador haga coincidir las llamadas con las rutinas que aumentan y disminuyen el recuento de referencias del objeto. Asegúrese de que su controlador no realice llamadas adicionales a rutinas que desreferencian el objeto (consulte el Parámetro 2).

Puede utilizar un depurador para ayudar a analizar este problema. Para obtener más información, consulte Análisis de volcado de memoria mediante los depuradores de Windows (WinDbg) . La extensión de depuración !analyze muestra información sobre la verificación de errores y puede resultar útil para determinar la causa raíz.

Para encontrar el número de identificadores y punteros del objeto, utilice el comando !object debugger.

kd> ! dirección del objeto

Donde dirección es la dirección del objeto dado en el Parámetro 2.

También puede establecer un punto de interrupción en el código que conduce a este código de parada e intentar avanzar un paso hacia el código de falla.

Si no está equipado para utilizar el depurador de Windows para solucionar este problema, puede utilizar algunas técnicas básicas de solución de problemas.

  • Consulte el registro del sistema en el Visor de eventos para ver mensajes de error adicionales que puedan ayudar a identificar el dispositivo o controlador que está causando esta verificación de errores.
  • Si se identifica un controlador en el mensaje de verificación de errores, desactívelo o consulte con el fabricante para obtener actualizaciones del controlador.
  • Confirme que cualquier hardware nuevo que esté instalado sea compatible con la versión instalada de Windows. 
  • Para obtener información adicional sobre solución de problemas generales, consulte Datos de pantalla azul