Title : Peak EWMA load balancer (contrib) randomly segfaults -- (Envoy via Istio-Proxy 1.29.0)
Description :
I certainly understand that the Istio-Proxy is a custom Envoy build and that Peak EWMA is a contrib module on top of that. I clarified with the envoy-security contact (@ggreenway ), that this crash issue is OK to report publicly.
It seems to me that this NOT related to traffic since I can run load of requests across different upstream targets with no issues.
At first glance it seems like random crashes. Maybe (!) they are related to the constant Pod and target churn happening in Kubernetes cluster. It's just a sandbox cluster, so no production traffic affected.
But that also means I gladly run more test if they help (you).
Repro steps :
I wanted to try the contrib loadbalancer module for Peak EWMA, added via PR contrib: implement Peak EWMA load balancing policy #40653 by @rroblak
Since we are running Istio, I proposed to add the PeakEWMA load balancer via Add Peak EWMA load balancer (contrib) istio/proxy#6690 , which was merged and is now part of Istio-Proxy >=1.29.0.
I upgraded our Istio sandbox to 1.29.0 (which means it runs https://github.com/istio/proxy/releases/tag/1.29.0 ).
Since Peak EWMA is not yet directly configurable via Istio configuration I added an EnvoyFilter which I attached as YAML.
After a while I noticed some container restarts and with Envoy crashing and throwing strack traces.
Config :
EnvoyFilter
---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: peak-ewma-lb
namespace: istio-ingress
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
subFilter:
name: envoy.filters.http.router
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.peak_ewma
typed_config:
'@type': type.googleapis.com/envoy.extensions.filters.http.peak_ewma.v3alpha.PeakEwmaConfig
- applyTo: CLUSTER
match:
context: GATEWAY
patch:
operation: MERGE
value:
load_balancing_policy:
policies:
- typed_extension_config:
name: envoy.clusters.lb.peak_ewma
typed_config:
'@type': type.googleapis.com/envoy.extensions.load_balancing_policies.peak_ewma.v3alpha.PeakEwma
workloadSelector:
labels:
istio: ingressgateway-external
This configuration itself works and I can see peak_ewma is configured for
all clusters as well as I can see the related stats being produced:
[...]
{
"cluster": {
"@type": "[type.googleapis.com/envoy.config.cluster.v3.Cluster](http://type.googleapis.com/envoy.config.cluster.v3.Cluster)",
"name": "outbound|80||httpbin.sandbox.svc.cluster.local",
"type": "EDS",
"eds_cluster_config": {
"eds_config": {
"ads": {},
"initial_fetch_timeout": "0s",
"resource_api_version": "V3"
},
"service_name": "outbound|80||httpbin.sandbox.svc.cluster.local"
},
"connect_timeout": "10s",
"lb_policy": "LEAST_REQUEST",
"circuit_breakers": {
"thresholds": [
{
"max_connections": 4294967295,
"max_pending_requests": 4294967295,
"max_requests": 4294967295,
"max_retries": 4294967295
}
]
},
"metadata": {
"filter_metadata": {
"istio": {
"services": [
{
"host": "httpbin.sandbox.svc.cluster.local",
"name": "httpbin",
"namespace": "sandbox"
}
]
}
}
},
"common_lb_config": {},
"alt_stat_name": "outbound|80||httpbin.sandbox.svc.cluster.local;",
"filters": [
{
"name": "istio.metadata_exchange",
"typed_config": {
"@type": "[type.googleapis.com/udpa.type.v1.TypedStruct](http://type.googleapis.com/udpa.type.v1.TypedStruct)",
"type_url": "[type.googleapis.com/envoy.tcp.metadataexchange.config.MetadataExchange](http://type.googleapis.com/envoy.tcp.metadataexchange.config.MetadataExchange)",
"value": {
"protocol": "istio-peer-exchange",
"enable_discovery": true
}
}
}
],
"load_balancing_policy": {
"policies": [
{
"typed_extension_config": {
"name": "envoy.clusters.lb.peak_ewma",
"typed_config": {
"@type": "[type.googleapis.com/envoy.extensions.load_balancing_policies.peak_ewma.v3alpha.PeakEwma](http://type.googleapis.com/envoy.extensions.load_balancing_policies.peak_ewma.v3alpha.PeakEwma)"
}
}
}
]
},
[...]
Logs :
[...]
{"level":"info","time":"2026-02-16T19:47:35.946536Z","msg":"FLAG: --log_as_json=\"true\""}
{"level":"info","time":"2026-02-16T19:47:35.946539Z","msg":"FLAG: --log_caller=\"\""}
{"level":"info","time":"2026-02-16T19:47:35.946542Z","msg":"FLAG: --log_output_level=\"default:info\""}
{"level":"info","time":"2026-02-16T19:47:35.946544Z","msg":"FLAG: --log_stacktrace_level=\"default:none\""}
{"level":"info","time":"2026-02-16T19:47:35.946553Z","msg":"FLAG: --log_target=\"[stdout]\""}
{"level":"info","time":"2026-02-16T19:47:35.946557Z","msg":"FLAG: --meshConfig=\"./etc/istio/config/mesh\""}
{"level":"info","time":"2026-02-16T19:47:35.946560Z","msg":"FLAG: --outlierLogPath=\"\""}
{"level":"info","time":"2026-02-16T19:47:35.946562Z","msg":"FLAG: --profiling=\"true\""}
{"level":"info","time":"2026-02-16T19:47:35.946565Z","msg":"FLAG: --proxyComponentLogLevel=\"misc:error\""}
{"level":"info","time":"2026-02-16T19:47:35.946568Z","msg":"FLAG: --proxyLogLevel=\"warning\""}
{"level":"info","time":"2026-02-16T19:47:35.946571Z","msg":"FLAG: --serviceCluster=\"istio-proxy\""}
{"level":"info","time":"2026-02-16T19:47:35.946574Z","msg":"FLAG: --stsPort=\"0\""}
{"level":"info","time":"2026-02-16T19:47:35.946576Z","msg":"FLAG: --templateFile=\"\""}
{"level":"info","time":"2026-02-16T19:47:35.946578Z","msg":"FLAG: --tokenManagerPlugin=\"\""}
{"level":"info","time":"2026-02-16T19:47:35.946582Z","msg":"FLAG: --vklog=\"0\""}
{"level":"info","time":"2026-02-16T19:47:35.946585Z","msg":"Version 1.29.0-2300e2458ab713c2c514a58da1ea8b03343ada7e-Clean"}
{"level":"info","time":"2026-02-16T19:47:35.946918Z","msg":"Proxy role","ips":["REDACTED"],"type":"router","id":"istio-ingressgateway-external-6d675cfb69-vwt6g.istio-ingress","domain":"istio-ingress.svc.cluster.local"}
{"level":"info","time":"2026-02-16T19:47:35.947002Z","msg":"Apply proxy config from env {\"runtimeValues\":{\"overload.global_downstream_max_connections\":\"175000\"},\"gatewayTopology\":{\"forwardClientCertDetails\":\"SANIT
IZE_SET\",\"proxyProtocol\":{}},\"terminationDrainDuration\":\"150s\",\"proxyStatsMatcher\":{\"inclusionRegexps\":[\"listener\\\\..*_(80|443).*\",\"downstream_cx_proxy_proto_error\",\"http.*downstream_cx_.*\",\"http.*downstr
eam_rq_.*\",\".*overload.*\"]}}\n"}
{"level":"info","time":"2026-02-16T19:47:35.948319Z","msg":"Apply proxy config from annotation terminationDrainDuration: 150s\nruntimeValues:\n \"overload.global_downstream_max_connections\": \"175000\"\n\nproxyStatsMatcher
:\n inclusionRegexps:\n - \"listener\\\\..*_(80|443).*\"\n - \"downstream_cx_proxy_proto_error\"\n - \"http.*downstream_cx_.*\"\n - \"http.*downstream_rq_.*\"\n - \".*overload.*\"\n"}
{"level":"info","time":"2026-02-16T19:47:35.948471Z","msg":"cpu limit detected as 2, setting concurrency"}
{"level":"info","time":"2026-02-16T19:47:35.948786Z","msg":"Effective config: binaryPath: /usr/local/bin/envoy\nconcurrency: 2\nconfigPath: ./etc/istio/proxy\ncontrolPlaneAuthPolicy: MUTUAL_TLS\ndiscoveryAddress: istiod.isti
o-system.svc:15012\ndrainDuration: 45s\ngatewayTopology:\n forwardClientCertDetails: SANITIZE_SET\n proxyProtocol: {}\nproxyAdminPort: 15000\nproxyStatsMatcher:\n inclusionRegexps:\n - listener\\..*_(80|443).*\n - downs
tream_cx_proxy_proto_error\n - http.*downstream_cx_.*\n - http.*downstream_rq_.*\n - .*overload.*\nruntimeValues:\n overload.global_downstream_max_connections: \"175000\"\nserviceCluster: istio-proxy\nstatNameLength: 189
\nstatusPort: 15020\nterminationDrainDuration: 150s\n"}
{"level":"info","time":"2026-02-16T19:47:35.948802Z","msg":"JWT policy is third-party-jwt"}
{"level":"info","time":"2026-02-16T19:47:35.948805Z","msg":"using credential fetcher of JWT type in cluster.local trust domain"}
{"level":"info","time":"2026-02-16T19:47:37.022934Z","msg":"Opening status port 15020"}
{"level":"info","time":"2026-02-16T19:47:37.022954Z","msg":"Starting default Istio SDS Server"}
{"level":"info","time":"2026-02-16T19:47:37.022979Z","msg":"CA Endpoint istiod.istio-system.svc:15012, provider Citadel"}
{"level":"info","time":"2026-02-16T19:47:37.023000Z","msg":"Using CA istiod.istio-system.svc:15012 cert with certs: var/run/secrets/istio/root-cert.pem"}
{"level":"info","time":"2026-02-16T19:47:37.023836Z","scope":"xdsproxy","msg":"Initializing with upstream address \"istiod.istio-system.svc:15012\" and cluster \"Kubernetes\""}
{"level":"info","time":"2026-02-16T19:47:37.024561Z","scope":"sds","msg":"Starting SDS grpc server"}
{"level":"info","time":"2026-02-16T19:47:37.026781Z","scope":"sds","msg":"Starting SDS server for workload certificates, will listen on \"var/run/secrets/workload-spiffe-uds/socket\""}
{"level":"info","time":"2026-02-16T19:47:37.026544Z","msg":"Pilot SAN: [istiod.istio-system.svc]"}
{"level":"info","time":"2026-02-16T19:47:37.029600Z","msg":"Starting proxy agent"}
{"level":"info","time":"2026-02-16T19:47:37.029920Z","msg":"Envoy command: [-c etc/istio/proxy/envoy-rev.json --drain-time-s 45 --drain-strategy immediate --local-address-ip-version v4 --file-flush-interval-msec 1000 --disab
le-hot-restart --allow-unknown-static-fields -l warning --component-log-level misc:error --skip-deprecated-logs --config-yaml {\"memory_allocator_manager\":{\"bytes_to_release\":50000000,\"memory_release_interval\":{\"second
s\":1}}} --concurrency 2]"}
{"level":"info","time":"2026-02-16T19:47:37.112604Z","scope":"cache","msg":"generated new workload certificate","resourceName":"default","latency":"88.079151ms","ttl":"23h59m59.887400729s"}
{"level":"info","time":"2026-02-16T19:47:37.112831Z","scope":"cache","msg":"Root cert has changed, start rotating root cert"}
{"level":"info","time":"2026-02-16T19:47:37.113011Z","scope":"cache","msg":"returned workload trust anchor from cache","ttl":"23h59m59.886990522s"}
{"level":"info","time":"2026-02-16T19:47:37.135253Z","scope":"xdsproxy","msg":"connected to delta upstream XDS server: istiod.istio-system.svc:15012","id":1}
{"level":"info","time":"2026-02-16T19:47:37.244926Z","scope":"ads","msg":"ADS: new connection for node:1"}
{"level":"info","time":"2026-02-16T19:47:37.250482Z","scope":"cache","msg":"adding watcher for file certificate /etc/ssl/certs/ca-certificates.crt"}
{"level":"info","time":"2026-02-16T19:47:37.250515Z","scope":"cache","msg":"read certificate from file","resource":"file-root:system"}
{"level":"info","time":"2026-02-16T19:47:37.282428Z","scope":"ads","msg":"ADS: new connection for node:2"}
{"level":"info","time":"2026-02-16T19:47:37.282722Z","scope":"cache","msg":"returned workload trust anchor from cache","ttl":"23h59m59.71728127s"}
{"level":"info","time":"2026-02-16T19:47:37.285485Z","scope":"ads","msg":"ADS: new connection for node:3"}
{"level":"info","time":"2026-02-16T19:47:37.285666Z","scope":"cache","msg":"returned workload certificate from cache","ttl":"23h59m59.714336457s"}
{"level":"info","time":"2026-02-16T19:47:39.596913Z","msg":"Readiness succeeded in 3.653890211s"}
{"level":"info","time":"2026-02-16T19:47:39.597419Z","msg":"Envoy proxy is ready"}
{"time":"2026-02-16T19:51:19.254197Z","level":"critical","scope":"envoy backtrace","msg":"Caught Segmentation fault, suspect faulting address 0x0","caller":"external/envoy/source/server/backtrace.h:129","thread":"14"}
{"time":"2026-02-16T19:51:19.254252Z","level":"critical","scope":"envoy backtrace","msg":"Backtrace (use tools/stack_decode.py to get line numbers):","caller":"external/envoy/source/server/backtrace.h:113","thread":"14"}
{"time":"2026-02-16T19:51:19.254257Z","level":"critical","scope":"envoy backtrace","msg":"Envoy version: 1fdadc301aaaa0326255f82bd27387a0e101c164/1.37.1-dev/Clean/RELEASE/BoringSSL","caller":"external/envoy/source/server/bac
ktrace.h:114","thread":"14"}
{"time":"2026-02-16T19:51:19.254260Z","level":"critical","scope":"envoy backtrace","msg":"Address mapping: 564bf84b2000-564bfbaf3000 /usr/local/bin/envoy","caller":"external/envoy/source/server/backtrace.h:116","thread":"14"
}
{"time":"2026-02-16T19:51:19.281722Z","level":"critical","scope":"envoy backtrace","msg":"#0: [0x7fe8afeea330]","caller":"external/envoy/source/server/backtrace.h:123","thread":"14"}
{"time":"2026-02-16T19:51:19.286032Z","level":"critical","scope":"envoy backtrace","msg":"#1: event_process_active_single_queue [0x564bfb4d06ac]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.290486Z","level":"critical","scope":"envoy backtrace","msg":"#2: event_base_loop [0x564bfb4cf421]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.295114Z","level":"critical","scope":"envoy backtrace","msg":"#3: Envoy::Server::InstanceBase::run() [0x564bfa872fb7]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.298902Z","level":"critical","scope":"envoy backtrace","msg":"#4: Envoy::MainCommonBase::run() [0x564bfa8195aa]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.302649Z","level":"critical","scope":"envoy backtrace","msg":"#5: Envoy::MainCommon::main() [0x564bfa819ab4]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.309888Z","level":"critical","scope":"envoy backtrace","msg":"#6: main [0x564bf854cf1c]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.310508Z","level":"critical","scope":"envoy backtrace","msg":"#7: [0x7fe8afecf1ca]","caller":"external/envoy/source/server/backtrace.h:123","thread":"14"}
{"time":"2026-02-16T19:51:19.310547Z","level":"critical","scope":"envoy backtrace","msg":"#8: __libc_start_main [0x7fe8afecf28b]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.315180Z","level":"critical","scope":"envoy backtrace","msg":"#9: _start [0x564bf84b202a]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"level":"error","time":"2026-02-16T19:51:19.323634Z","msg":"Envoy exited with error: signal: segmentation fault (core dumped)"}
{"level":"info","time":"2026-02-16T19:51:19.323863Z","scope":"ads","msg":"ADS: \"\" 1 terminated"}
{"level":"info","time":"2026-02-16T19:51:19.324239Z","scope":"ads","msg":"ADS: \"\" 3 terminated"}
{"level":"info","time":"2026-02-16T19:51:19.324418Z","scope":"ads","msg":"ADS: \"\" 2 terminated"}
[...]
{"level":"info","time":"2026-02-16T19:47:35.948802Z","msg":"JWT policy is third-party-jwt"}
{"level":"info","time":"2026-02-16T19:47:35.948805Z","msg":"using credential fetcher of JWT type in cluster.local trust domain"}
{"level":"info","time":"2026-02-16T19:47:37.022934Z","msg":"Opening status port 15020"}
{"level":"info","time":"2026-02-16T19:47:37.022954Z","msg":"Starting default Istio SDS Server"}
{"level":"info","time":"2026-02-16T19:47:37.022979Z","msg":"CA Endpoint istiod.istio-system.svc:15012, provider Citadel"}
{"level":"info","time":"2026-02-16T19:47:37.023000Z","msg":"Using CA istiod.istio-system.svc:15012 cert with certs: var/run/secrets/istio/root-cert.pem"}
{"level":"info","time":"2026-02-16T19:47:37.023836Z","scope":"xdsproxy","msg":"Initializing with upstream address \"istiod.istio-system.svc:15012\" and cluster \"Kubernetes\""}
{"level":"info","time":"2026-02-16T19:47:37.024561Z","scope":"sds","msg":"Starting SDS grpc server"}
{"level":"info","time":"2026-02-16T19:47:37.026781Z","scope":"sds","msg":"Starting SDS server for workload certificates, will listen on \"var/run/secrets/workload-spiffe-uds/socket\""}
{"level":"info","time":"2026-02-16T19:47:37.026544Z","msg":"Pilot SAN: [istiod.istio-system.svc]"}
{"level":"info","time":"2026-02-16T19:47:37.029600Z","msg":"Starting proxy agent"}
{"level":"info","time":"2026-02-16T19:47:37.029920Z","msg":"Envoy command: [-c etc/istio/proxy/envoy-rev.json --drain-time-s 45 --drain-strategy immediate --local-address-ip-version v4 --file-flush-interval-msec 1000 --disab
{"level":"info","time":"2026-02-16T19:47:37.112604Z","scope":"cache","msg":"generated new workload certificate","resourceName":"default","latency":"88.079151ms","ttl":"23h59m59.887400729s"}
{"level":"info","time":"2026-02-16T19:47:37.112831Z","scope":"cache","msg":"Root cert has changed, start rotating root cert"}
{"level":"info","time":"2026-02-16T19:47:37.113011Z","scope":"cache","msg":"returned workload trust anchor from cache","ttl":"23h59m59.886990522s"}
{"level":"info","time":"2026-02-16T19:47:37.135253Z","scope":"xdsproxy","msg":"connected to delta upstream XDS server: istiod.istio-system.svc:15012","id":1}
{"level":"info","time":"2026-02-16T19:47:37.244926Z","scope":"ads","msg":"ADS: new connection for node:1"}
{"level":"info","time":"2026-02-16T19:47:37.250482Z","scope":"cache","msg":"adding watcher for file certificate /etc/ssl/certs/ca-certificates.crt"}
{"level":"info","time":"2026-02-16T19:47:37.250515Z","scope":"cache","msg":"read certificate from file","resource":"file-root:system"}
{"level":"info","time":"2026-02-16T19:47:37.282428Z","scope":"ads","msg":"ADS: new connection for node:2"}
{"level":"info","time":"2026-02-16T19:47:37.282722Z","scope":"cache","msg":"returned workload trust anchor from cache","ttl":"23h59m59.71728127s"}
{"level":"info","time":"2026-02-16T19:47:37.285485Z","scope":"ads","msg":"ADS: new connection for node:3"}
{"level":"info","time":"2026-02-16T19:47:37.285666Z","scope":"cache","msg":"returned workload certificate from cache","ttl":"23h59m59.714336457s"}
{"level":"info","time":"2026-02-16T19:47:39.596913Z","msg":"Readiness succeeded in 3.653890211s"}
{"level":"info","time":"2026-02-16T19:47:39.597419Z","msg":"Envoy proxy is ready"}
{"time":"2026-02-16T19:51:19.254197Z","level":"critical","scope":"envoy backtrace","msg":"Caught Segmentation fault, suspect faulting address 0x0","caller":"external/envoy/source/server/backtrace.h:129","thread":"14"}
{"time":"2026-02-16T19:51:19.254252Z","level":"critical","scope":"envoy backtrace","msg":"Backtrace (use tools/stack_decode.py to get line numbers):","caller":"external/envoy/source/server/backtrace.h:113","thread":"14"}
{"time":"2026-02-16T19:51:19.254257Z","level":"critical","scope":"envoy backtrace","msg":"Envoy version: 1fdadc301aaaa0326255f82bd27387a0e101c164/1.37.1-dev/Clean/RELEASE/BoringSSL","caller":"external/envoy/source/server/bac
{"time":"2026-02-16T19:51:19.254260Z","level":"critical","scope":"envoy backtrace","msg":"Address mapping: 564bf84b2000-564bfbaf3000 /usr/local/bin/envoy","caller":"external/envoy/source/server/backtrace.h:116","thread":"14"
{"time":"2026-02-16T19:51:19.281722Z","level":"critical","scope":"envoy backtrace","msg":"#0: [0x7fe8afeea330]","caller":"external/envoy/source/server/backtrace.h:123","thread":"14"}
{"time":"2026-02-16T19:51:19.286032Z","level":"critical","scope":"envoy backtrace","msg":"#1: event_process_active_single_queue [0x564bfb4d06ac]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.290486Z","level":"critical","scope":"envoy backtrace","msg":"#2: event_base_loop [0x564bfb4cf421]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.295114Z","level":"critical","scope":"envoy backtrace","msg":"#3: Envoy::Server::InstanceBase::run() [0x564bfa872fb7]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.298902Z","level":"critical","scope":"envoy backtrace","msg":"#4: Envoy::MainCommonBase::run() [0x564bfa8195aa]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.302649Z","level":"critical","scope":"envoy backtrace","msg":"#5: Envoy::MainCommon::main() [0x564bfa819ab4]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.309888Z","level":"critical","scope":"envoy backtrace","msg":"#6: main [0x564bf854cf1c]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.310508Z","level":"critical","scope":"envoy backtrace","msg":"#7: [0x7fe8afecf1ca]","caller":"external/envoy/source/server/backtrace.h:123","thread":"14"}
{"time":"2026-02-16T19:51:19.310547Z","level":"critical","scope":"envoy backtrace","msg":"#8: __libc_start_main [0x7fe8afecf28b]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"time":"2026-02-16T19:51:19.315180Z","level":"critical","scope":"envoy backtrace","msg":"#9: _start [0x564bf84b202a]","caller":"external/envoy/source/server/backtrace.h:121","thread":"14"}
{"level":"error","time":"2026-02-16T19:51:19.323634Z","msg":"Envoy exited with error: signal: segmentation fault (core dumped)"}
{"level":"info","time":"2026-02-16T19:51:19.323863Z","scope":"ads","msg":"ADS: \"\" 1 terminated"}
{"level":"info","time":"2026-02-16T19:51:19.324239Z","scope":"ads","msg":"ADS: \"\" 3 terminated"}
{"level":"info","time":"2026-02-16T19:51:19.324418Z","scope":"ads","msg":"ADS: \"\" 2 terminated"}
I switched to debug logs now and will try to provide more context (what happens before the crashes).
Call Stack :
I hope the stack from the access logs above helps. Please instruct me what to provide otherwise.
Title: Peak EWMA load balancer (contrib) randomly segfaults -- (Envoy via Istio-Proxy 1.29.0)
Description:
I certainly understand that the Istio-Proxy is a custom Envoy build and that Peak EWMA is a contrib module on top of that. I clarified with the envoy-security contact (@ggreenway), that this crash issue is OK to report publicly.
It seems to me that this NOT related to traffic since I can run load of requests across different upstream targets with no issues.
At first glance it seems like random crashes. Maybe (!) they are related to the constant Pod and target churn happening in Kubernetes cluster. It's just a sandbox cluster, so no production traffic affected.
But that also means I gladly run more test if they help (you).
Repro steps:
I wanted to try the contrib loadbalancer module for Peak EWMA, added via PR contrib: implement Peak EWMA load balancing policy #40653 by @rroblak
Since we are running Istio, I proposed to add the PeakEWMA load balancer via Add Peak EWMA load balancer (contrib) istio/proxy#6690, which was merged and is now part of Istio-Proxy >=1.29.0.
I upgraded our Istio sandbox to 1.29.0 (which means it runs https://github.com/istio/proxy/releases/tag/1.29.0).
Since Peak EWMA is not yet directly configurable via Istio configuration I added an EnvoyFilter which I attached as YAML.
After a while I noticed some container restarts and with Envoy crashing and throwing strack traces.
Config:
EnvoyFilter
This configuration itself works and I can see peak_ewma is configured for
all clusters as well as I can see the related stats being produced:
Logs:
I switched to debug logs now and will try to provide more context (what happens before the crashes).
Call Stack:
I hope the stack from the access logs above helps. Please instruct me what to provide otherwise.