🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
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 2025 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 é o coração da infraestrutura de APIs da Google Cloud. Este binário regional gerencia autenticação, quota enforcement e policy checks para TODAS as requisições de API. Quando ele falha, toda a stack cai junto.

Service Control Architecture

Service Control é um serviço regional com datastore Spanner que gerencia políticas de quota globalmente. Metadados replicam instantaneamente entre 42 regiões para enforcement de 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 para quota policy checks foi deployada. Código tinha path nunca testado. 12 de junho: Policy update com campos em branco triggou o path não testado → null pointer → crash loop.

  • • 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

Este incident expôs gaps críticos em design de sistemas distribuídos. Cada falha aqui é uma masterclass em como NÃO projetar infraestrutura crítica.

Fail-Safe Design

Service Control será modularizado para fail open. Se policy check falha, API request deve prosseguir. Princípio fundamental: availability over consistency.

Feature Flag Protection

TODAS mudanças em binários críticos serão feature flag protected e disabled by default. Rollout gradual region-by-region, projeto interno primeiro.

Chaos Engineering

Testing de paths não exercitados via chaos engineering. Inject failures regulares para descobrir edge cases antes que cheguem em produção.

Exponential Backoff

Implementar randomized exponential backoff em TODOS os clients. Evitar herd effects que sobrecarregam backends durante recovery.

Global Replication Control

Metadados críticos não podem replicar globalmente instantaneamente. Implementar staged rollout com validation e monitoring entre regiões.

Observability Resilience

Monitoring e communication infrastructure devem ser independentes da primary stack. Out-of-band monitoring para detectar falhas quando tudo está down.

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.