Pular para o conteúdo
Incident Report

Service Control Crash Loop O Null Pointer que Quebrou a Internet

Análise técnica profunda de como um null pointer exception no binário Service Control da Google Cloud causou crash loop global, afetando 86+ serviços por 3 horas e gerando 1.4M+ reports de outage mundial.

Incident Real

Análise técnica do crash loop global de junho 2026 Quando o Service Control Falhou

Um null pointer exception em código não testado no binário Service Control da Google Cloud propagou-se globalmente em segundos, derrubando Gmail, YouTube, Spotify, Discord e 80+ outros serviços por 3 horas. Uma lição impactante sobre fail-safe design.

2m
Tempo para detecção SRE
86+
Serviços impactados
1.4M+
Reports de outage
3h
Duração total
service-control.cpp
// FALHA CRÍTICA: Null pointer não verificado if (!policy_data) { throw std::runtime_error("null pointer"); // CRASH LOOP }

Root Cause Analysis

Service Control é tipo o coração batendo na infraestrutura de APIs da Google Cloud. Esse binário regional cuida de autenticação, controla quotas e valida políticas pra TODAS as requests de API. Quando ele morre, a stack inteira desaba.

Service Control Architecture

Service Control roda regional com datastore Spanner, gerenciando políticas de quota no mundo inteiro. Metadados se espalham em segundos pelas 42 regiões pra manter quota consistente.

  • • Regional binary com Spanner backend
  • • Replicação global em segundos
  • • Policy checks para TODAS APIs
  • • Quota enforcement distribuído

O Null Pointer Fatal

29 de maio: nova feature de quota policy checks no ar. O código tinha um caminho que ninguém testou. 12 de junho: policy update com campos vazios ativa o caminho não testado → null pointer → crash loop infinito.

  • • Path de código nunca exercitado
  • • Sem error handling apropriado
  • • Sem feature flag protection
  • • Propagação global instantânea

Timeline Detalhado do Incident

10:49 PDTPolicy change inserida no Spanner com campos em branco
10:51 PDTService Control crash loop inicia globalmente - null pointer exception
10:53 PDTSRE team detecta anomalia via monitoring interno
11:01 PDTRoot cause identificado - preparo do red button (kill switch)
11:16 PDTRed button rollout completo - recovery inicia em regiões menores
13:49 PDTFull recovery - us-central1 demora mais devido ao herd effect

Impacto Técnico Cascata de Falhas Distribuídas

Como um único null pointer propagou-se através de sistemas distribuídos globais

Propagação Instantânea

Metadados de policy replicaram globalmente em segundos via Spanner. Cada região exercitou o bad path simultaneamente.

Herd Effect em us-central1

Service Control restart simultâneo sobrecarregou Spanner backend. Falta de exponential backoff agravou o problema.

503 Errors Cascadeados

API Gateway rejeitou todas requests. Serviços downstream falharam em cadeia. Monitoring próprio da Google também falhou.

Lições de Engineering

Esse incidente mostrou buracos críticos no design de sistemas distribuídos. Cada erro aqui é aula de como NÃO construir infra crítica.

Fail-Safe Design

Service Control vai virar modular e fazer fail open. Se policy check falhar, request continua. Regra de ouro: disponibilidade antes de consistência.

Feature Flag Protection

Toda mudança em binário crítico vai ter feature flag e vir desabilitada. Rollout gradual região por região, projetos internos primeiro.

Chaos Engineering

Testar caminhos não usados via chaos engineering. Injetar falhas direto pra descobrir edge cases antes de virar problema em produção.

Exponential Backoff

Botar randomized exponential backoff em todos os clients. Evita herd effect que sobrecarrega backend na hora da recuperação.

Global Replication Control

Metadados críticos não dá pra replicar no mundo todo de uma vez. Fazer staged rollout com validação e monitoramento entre regiões.

Observability Resilience

Infra de monitoring e comunicação tem que ser separada da stack principal. Out-of-band monitoring pra detectar quando tudo cai.

Engineering Takeaways para Devs

  • •Null Safety: Use linguagens com null safety (Rust, Kotlin) ou static analysis tools rigorosos
  • •Circuit Breakers: Implemente circuit breakers em todos API clients para fail fast
  • •Bulkhead Pattern: Isole componentes críticos para evitar cascading failures
  • •Staging Environment: Mirror production exatamente, incluindo data distribution patterns
  • •Canary Deployments: Deploy incremental com automated rollback em milliseconds

Domine Engineering de Infraestrutura

Aprenda práticas avançadas de SRE, chaos engineering e design de sistemas distribuídos resilientes. Evite falhas catastróficas como esta.