macOS 10.12.6: Pánico, error de aserción: ifp-if_sndbyte_total = len, bsd / netinet / in_pcb.c, línea: 3458

3

Estoy obteniendo pánicos esporádicos del kernel como este:

*** Panic Report ***
panic(cpu 3 caller 0xffffff80189d435f): assertion failed: ifp->if_sndbyte_total >= len, file: /Library/Caches/com.apple.xbs/Sources/xnu/xnu-3789.70.16/bsd/netinet/in_pcb.c, line: 3458

[…]

Mac OS version:
16G29

Kernel version:
Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64
Kernel UUID: [REDACTED]
Kernel slide:     0x0000000018200000
Kernel text base: 0xffffff8018400000
__HIB  text base: 0xffffff8018300000
System model name: MacBookPro12,1 (Mac-[REDACTED])

System uptime in nanoseconds: 205886295907546
last loaded kext at 205508810738561: com.apple.driver.usb.cdc   5.0.0 (addr 0xffffff7f9b612000, size 28672)
last unloaded kext at 196312576713453: com.apple.driver.usb.AppleUSBHostCompositeDevice 1.1 (addr 0xffffff7f9b60b000, size 28672)

[…]

( encuentre el resto del registro en este gist )

He leído la nota técnica de Apple sobre la depuración de problemas del Kernel Panics , pero no pude encontrar la forma de aplicarlo a este pánico, más el enlace para descargar el Kernel Debug Kit está roto, por lo que no pude obtener una asignación de kexts en la memoria del kernel. No sé qué se cargó. 0xffffff80189d435f .

También leí el código fuente , que “administra [s] los Bloques de Control de Protocolo”, es decir, todo el mantenimiento del estado para sockets TCP. La función en cuestión es:

inline void
inp_incr_sndbytes_unsent(struct socket *so, int32_t len)
{
  struct inpcb *inp = (struct inpcb *)so->so_pcb;
  struct ifnet *ifp = inp->inp_last_outifp;

  if (ifp != NULL) {
    VERIFY(ifp->if_sndbyte_unsent >= 0);
    OSAddAtomic64(len, &ifp->if_sndbyte_unsent);
  }
}

lo que me sugiere que el problema está en la pila de la red y podría tener algo que ver con el seguimiento de los buffers, pero no soy lo suficiente de un experto en BSD o TCP para entender el flujo de control.

No sé cuál es la mejor manera de depurar esto. Mi corazonada es que tiene que ver con el cliente VPN (Pulse Secure, antes Junos), pero no puedo activar el fallo de forma confiable, simplemente sucede con el tiempo (y cuando lo estaba observando, solo sucedió mientras estaba en la VPN, pero n = 2). Necesito un escáner de virus y Pulse Secure para poder hacer mi trabajo.

ACTUALIZACIÓN El bloqueo se repitió después de apenas 6 horas de funcionamiento, la mayoría de las cuales se pasó inactiva. Los diagnósticos de funcionamiento corrieron ayer, obtuvieron la computadora con todo en buen estado en la mañana, la pusieron a dormir para el desayuno, viajaron al aeropuerto, la abrieron de nuevo y se estrelló después de unos pocos minutos (< 2). Yo estaba en VPN cuando se despertó. Además, debido a que se trató de una falla bastante "limpia", los últimos kexts cargados fueron:

last loaded kext at 1743857437016: com.apple.driver.usb.cdc 5.0.0 (addr 0xffffff7f94191000, size 28672)
last unloaded kext at 898332773796: com.apple.driver.AppleIntelLpssI2C  3.0.60 (addr 0xffffff7f93853000, size 40960)

ya que no había conectado ningún dispositivo USB desde el último arranque en frío, nuevamente me sugirió que no es un problema de hardware o USB, sino uno con la VPN y / o la pila TCP del lado del kernel.

    
pregunta moeffju 12.09.2017 - 23:32

0 respuestas

Lea otras preguntas en las etiquetas