Skip to content

Panic in redis_pool.go: "reflect: call of reflect.Value.Field on zero Value" (Yaegi compatibility issue?) #120

@florian-thoma-cube

Description

@florian-thoma-cube

Created with Support of Github Copilot...

I am running Traefik v3.6.7 with the latest version of traefikoidc (likely > v0.8.13) as a plugin in a Kubernetes cluster. I am using Redis (DragonflyDB) as the cache backend.

After a short period of operation or under load, the plugin crashes causing a panic that is caught by Traefik's recovery middleware. The error indicates a reflection issue on a zero Value, which typically points to a compatibility problem between the code (specifically the sync.Pool or struct initialization in the recent caching refactors) and the Yaegi interpreter used by Traefik.

Environment:

Traefik Version: v3.6.7 (built on 2026-01-14)
Plugin Version: Latest (v0.8.20)
Cache Backend: Redis (DragonflyDB v1.36.0)
Deployment: Kubernetes

Logs / Stack Trace:

2026-01-19T10:31:12+01:00 ERR plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/backends/redis_pool.go:243:5: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/backends.Do(...) module=github.com/lukaszraczylo/traefikoidc plugin=plugin-traefikoidc
...
2026-01-19T10:31:12+01:00 ERR Recovered from panic in HTTP handler [IP-REDACTED]: reflect: call of reflect.Value.Field on zero Value middlewareName=traefik-internal-recovery middlewareType=Recovery
...
panic({0x60ef560?, 0xc007b41518?})
    runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
    github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
Click to expand full stack trace
2026-01-19T10:28:35+01:00   Traefik can reject some encoded characters in the request path.When your backend is not fully compliant with [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986),it is recommended to set these options to `false` to avoid split-view situation.Refer to the documentation for more details: https://doc.traefik.io/traefik/v3.6/migrate/v3/#encoded-characters-configuration-default-values
2026-01-19T10:28:35+01:00   Traefik version 3.6.7 built on 2026-01-14T14:04:03Z version=3.6.7
2026-01-19T10:28:35+01:00   Version check is enabled.
2026-01-19T10:28:35+01:00   Traefik checks for new releases to notify you if your version is out of date.
2026-01-19T10:28:35+01:00   It also collects usage data during this process.
2026-01-19T10:28:35+01:00   Check the documentation to get more info: https://doc.traefik.io/traefik/contributing/data-collection/
2026-01-19T10:28:35+01:00   
Stats collection is disabled.
Help us improve Traefik by turning this feature on :)
More details on: https://doc.traefik.io/traefik/contributing/data-collection/

2026-01-19T10:28:35+01:00   Enabling ProxyProtocol for trusted IPs [***] entryPointName=web
2026-01-19T10:28:35+01:00   Enabling ProxyProtocol for trusted IPs [***] entryPointName=websecure
2026-01-19T10:28:35+01:00   Loading plugins... plugins=["traefik-xff-to-xrealip","traefikoidc"]
2026-01-19T10:28:36+01:00   Plugins loaded. plugins=["traefik-xff-to-xrealip","traefikoidc"]
2026-01-19T10:28:36+01:00   Starting provider aggregator *aggregator.ProviderAggregator
2026-01-19T10:28:36+01:00   Starting provider *file.Provider
2026-01-19T10:28:36+01:00   Starting provider *traefik.Provider
2026-01-19T10:28:36+01:00   Starting provider *ingress.Provider
2026-01-19T10:28:36+01:00   ingress label selector is: "" providerName=kubernetes
2026-01-19T10:28:36+01:00   Creating in-cluster Provider client providerName=kubernetes
2026-01-19T10:28:36+01:00   Starting provider *acme.ChallengeTLSALPN
2026-01-19T10:28:36+01:00   Starting provider *crd.Provider
2026-01-19T10:28:36+01:00   label selector is: "" providerName=kubernetescrd
2026-01-19T10:28:36+01:00   Creating in-cluster Provider client providerName=kubernetescrd
2026-01-19T10:28:36+01:00   Cross-namespace reference between IngressRoutes and resources is enabled, please ensure that this is expected (see AllowCrossNamespace option) providerName=kubernetescrd
2026-01-19T10:28:36+01:00   ExternalName service loading is enabled, please ensure that this is expected (see AllowExternalNameServices option) providerName=kubernetescrd
2026-01-19T10:28:36+01:00   ExternalName service loading is enabled, please ensure that this is expected (see AllowExternalNameServices option) providerName=kubernetes
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Initializing cache manager with Redis backend: dragonflydb.traefik.svc.cluster.local:6379
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Redis backend wrapped with health checker
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Using Redis-only cache backend
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Cache manager initialized with redis backend configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 UniversalCacheManager: Started consolidated cleanup routine for all caches
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
2026-01-19T10:28:36+01:00   No domain found in rule Path(`/robots.txt`), the TLS options applied for this router will depend on the SNI of each request entryPointName=websecure  routerName=websecure-traefik-robots-55b6322d5635073e6fe7@kubernetescrd
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:28:36 Fetching provider metadata from: https://***/adfs/.well-known/openid-configuration
INFO: TraefikOidcPlugin: 2026/01/19 10:30:27 ScopeFilter: Filtered unsupported scopes for https://***/adfs: [offline_access] (not in provider's scopes_supported)
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/backends/redis_pool.go:243:5: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/backends.Do(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/backends/redis.go:134:16: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/backends.Get.func(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/backends/redis.go:350:2: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/backends.executeWithRetry(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/backends/redis.go:122:5: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/backends.Get(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/resilience/health_check_backend.go:62:29: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/resilience.Get(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/universal_cache.go:318:5: panic: github.com/lukaszraczylo/traefikoidc.Get(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/cache_manager.go:144:9: panic: github.com/lukaszraczylo/traefikoidc.Get(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/token_manager.go:31:5: panic: github.com/lukaszraczylo/traefikoidc.VerifyToken(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/token_manager.go:150:9: panic: github.com/lukaszraczylo/traefikoidc.verifyToken(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/token_manager.go:817:19: panic: github.com/lukaszraczylo/traefikoidc.validateStandardTokens(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/auth_flow.go:316:5: panic: github.com/lukaszraczylo/traefikoidc.isUserAuthenticated(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/middleware.go:30:2: panic: github.com/lukaszraczylo/traefikoidc.ServeHTTP(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:12+01:00   plugins-storage/sources/gop-663649738/src/github.com/jeppestaerk/traefik-xff-to-xrealip/main.go:39:9: panic: github.com/jeppestaerk/traefik-xff-to-xrealip.ServeHTTP(...) module=github.com/jeppestaerk/traefik-xff-to-xrealip  plugin=plugin-traefik-xff-to-xrealip  runtime=
2026-01-19T10:31:12+01:00   Recovered from panic in HTTP handler [10.0.125.244:57997 - /assets/react-dom-CU5xapJY.js]: reflect: call of reflect.Value.Field on zero Value middlewareName=traefik-internal-recovery  middlewareType=Recovery
2026-01-19T10:31:12+01:00   Stack: goroutine 4935 [running]:
github.com/traefik/traefik/v3/pkg/middlewares/recovery.recoverFunc({0x79cc640, 0xc00e062b00}, 0xc005a50000)
	github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:52 +0x231
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc007b41518?})
	runtime/panic.go:792 +0x132
reflect.Value.Field({0x0?, 0x0?, 0xc00a8489d8?}, 0xc009a08990?)
	reflect/value.go:1272 +0xcf
reflect.Value.FieldByIndex({0x0?, 0x0?, 0x7f7eb590e7e8?}, {0xc003189428?, 0xc004876960?, 0x0?})
	reflect/value.go:1305 +0x4e
github.com/traefik/yaegi/interp.getPtrIndexSeq.func2(0x47b833?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:2110 +0xc9
github.com/traefik/yaegi/interp.runCfg(0xc0045ec640, 0xc00f0ed080, 0xc003ec1520?, 0x5d4b100?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
github.com/traefik/yaegi/interp.genFunctionWrapper.func1.1({0xc004876870, 0x2, 0x8?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1042 +0x805
reflect.Value.call({0xc00470b560?, 0xc0048767e0?, 0x0?}, {0x6e272d2, 0x4}, {0xc004876810, 0x2, 0x30?})
	reflect/value.go:584 +0xca6
reflect.Value.Call({0xc00470b560?, 0xc0048767e0?, 0x480849?}, {0xc004876810?, 0x6dd8200?, 0xc0063bc401?})
	reflect/value.go:368 +0xb9
github.com/traefik/yaegi/interp.call.func9.2({0xc004876810?, 0xc0048767e0?, 0x0?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1310 +0x36
github.com/traefik/yaegi/interp.call.func9(0xc00f0ecfd0)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1330 +0xcc5
github.com/traefik/yaegi/interp.runCfg(0xc004489540, 0xc00f0ecfd0, 0xc007b19660?, 0xc004993c40?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
github.com/traefik/yaegi/interp.getFunc.func1.1({0xc007b413e0, 0x1, 0x1?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1919 +0x5f5
reflect.Value.call({0xc004935c70?, 0xc00ee5ef10?, 0x47b833?}, {0x6e272d2, 0x4}, {0xc007b413c8, 0x1, 0x18?})
	reflect/value.go:584 +0xca6
reflect.Value.Call({0xc004935c70?, 0xc00ee5ef10?, 0x480849?}, {0xc007b413c8?, 0x6dd8200?, 0xaa6da01?})
	reflect/value.go:368 +0xb9
github.com/traefik/yaegi/interp.call.func9.2({0xc007b413c8?, 0xc00ee5ef10?, 0x41bd34?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1310 +0x36
github.com/traefik/yaegi/interp.call.func9(0xc007b7abb0)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1330 +0xcc5
github.com/traefik/yaegi/interp.runCfg(0xc0044cf7c0, 0xc007b7abb0, 0xc007b19640?, 0xc004935c70?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
github.com/traefik/yaegi/interp.genFunctionWrapper.func1.1({0xc001c27ef0, 0x2, 0x4?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1042 +0x805
reflect.Value.call({0xc004935cc0?, 0xc001c27dd0?, 0x8?}, {0x6e272d2, 0x4}, {0xc001c27ec0, 0x2, 0xc001c27e90?})
	reflect/value.go:584 +0xca6
reflect.Value.Call({0xc004935cc0?, 0xc001c27dd0?, 0x480849?}, {0xc001c27ec0?, 0xc001c27e90?, 0xc004935c70?})
	reflect/value.go:368 +0xb9
github.com/traefik/yaegi/interp.call.func9.2({0xc001c27ec0?, 0xc001c27dd0?, 0x2?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1310 +0x36
github.com/traefik/yaegi/interp.call.func9(0xc007b7a9a0)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1330 +0xcc5
github.com/traefik/yaegi/interp.runCfg(0xc0044848c0, 0xc007b7a9a0, 0xc007b194a0?, 0x5e630a0?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
...54 frames elided...
github.com/traefik/traefik/v3/pkg/middlewares/headers.secureHeader.ServeHTTP(...)
	github.com/traefik/traefik/v3/pkg/middlewares/headers/secure.go:49
github.com/traefik/traefik/v3/pkg/middlewares/headers.(*Header).ServeHTTP(0xc007edb380, {0x79b65c0, 0xc0084abea0}, 0xc005a50a00)
	github.com/traefik/traefik/v3/pkg/middlewares/headers/header.go:63 +0x11a
github.com/traefik/traefik/v3/pkg/middlewares/headers.(*headers).ServeHTTP(0x79ca658?, {0x79b65c0?, 0xc0084abea0?}, 0x3?)
	github.com/traefik/traefik/v3/pkg/middlewares/headers/headers.go:65 +0x26
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*middlewareTracing).ServeHTTP(0xc004b9e990, {0x79b65c0, 0xc0084abea0}, 0xc005a50a00)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:67 +0x4a9
reflect.Value.call({0x62cd4c0?, 0xc007eeb0f8?, 0x474d1c?}, {0x6e272d2, 0x4}, {0xc000f2c600, 0x2, 0x30?})
	reflect/value.go:584 +0xca6
reflect.Value.Call({0x62cd4c0?, 0xc007eeb0f8?, 0x480849?}, {0xc000f2c600?, 0x6dd8200?, 0xc008691d01?})
	reflect/value.go:368 +0xb9
github.com/traefik/yaegi/interp.callBin.func2({0x62cd4c0?, 0xc007eeb0f8?, 0xc000524bb0?}, {0xc000f2c600?, 0x5e630a0?, 0xc008691da8?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1465 +0x25
github.com/traefik/yaegi/interp.callBin.func11(0xc000524bb0)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1653 +0x158
github.com/traefik/yaegi/interp.runCfg(0xc0010d3cc0, 0xc000524bb0, 0xc0079c9e80?, 0x6cfb900?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
github.com/traefik/yaegi/interp.genFunctionWrapper.func1.1({0xc000f2c4e0, 0x2, 0x4?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1042 +0x805
github.com/traefik/yaegi/stdlib._net_http_Handler.ServeHTTP(...)
	github.com/traefik/yaegi@v0.16.1/stdlib/go1_22_net_http.go:296
github.com/traefik/traefik/v3/pkg/server/middleware.(*traceablePlugin).ServeHTTP(0x79ca658?, {0x79b65c0?, 0xc0084abea0?}, 0x6e4cd49?)
	github.com/traefik/traefik/v3/pkg/server/middleware/plugins.go:54 +0x26
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*middlewareTracing).ServeHTTP(0xc004b9ec60, {0x79b65c0, 0xc0084abea0}, 0xc005a50a00)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:67 +0x4a9
github.com/traefik/traefik/v3/pkg/middlewares/contenttype.(*contentType).ServeHTTP(0xc007eec380, {0x79b65c0, 0xc0084abea0}, 0xc005a50a00)
	github.com/traefik/traefik/v3/pkg/middlewares/contenttype/content_type.go:46 +0x116
github.com/klauspost/compress/gzhttp.NewWrapper.func1.1({0x7f7eb58956e0, 0xc00e062b00}, 0xc005a50a00)
	github.com/klauspost/compress@v1.18.0/gzhttp/compress.go:517 +0x5df
net/http.HandlerFunc.ServeHTTP(0xc0092ba868?, {0x7f7eb58956e0?, 0xc00e062b00?}, 0xc007d49a40?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/middlewares/compress.(*compress).chooseHandler(0xc007d49a40?, {0xc0065a85b8?, 0x6e65423?}, {0x7f7eb58956e0?, 0xc00e062b00?}, 0x8?)
	github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:177 +0xa2
github.com/traefik/traefik/v3/pkg/middlewares/compress.(*compress).ServeHTTP(0xc007d49a40, {0x7f7eb58956e0, 0xc00e062b00}, 0xc005a50a00)
	github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:167 +0x29d
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*middlewareTracing).ServeHTTP(0xc004b9ee10, {0x7f7eb58956e0, 0xc00e062b00}, 0xc005a50a00)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:67 +0x4a9
github.com/traefik/traefik/v3/pkg/middlewares/accesslog.(*ConcatFieldHandler).ServeHTTP(0xc004b9ee40, {0x7f7eb58956e0, 0xc00e062b00}, 0xc005a50a00)
	github.com/traefik/traefik/v3/pkg/middlewares/accesslog/field_middleware.go:98 +0x247
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*routerTracing).ServeHTTP(0xc007edb480, {0x7f7eb58956e0, 0xc00e062b00}, 0xc005a50a00)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/router.go:59 +0x763
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*semConvServerMetrics).ServeHTTP(0x544a694f69515761?, {0x7f7eb58956e0?, 0xc00e062b00?}, 0x4c83e5?)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/semconv.go:50 +0xeb8
github.com/traefik/traefik/v3/pkg/middlewares/accesslog.(*FieldHandler).ServeHTTP(0xc007edb540, {0x7f7eb58956e0, 0xc00e062b00}, 0xc005a50a00)
	github.com/traefik/traefik/v3/pkg/middlewares/accesslog/field_middleware.go:33 +0x11e
github.com/traefik/traefik/v3/pkg/middlewares/accesslog.(*Handler).ServeHTTP(0xc000770840, {0x7f7eb58956e0, 0xc00e062b00}, 0xc005a50a00, {0x794cd40, 0xc007edb540})
	github.com/traefik/traefik/v3/pkg/middlewares/accesslog/logger.go:212 +0x13ef
github.com/traefik/traefik/v3/pkg/server/middleware.(*ObservabilityMgr).BuildEPChain.(*Handler).AliceConstructor.func4.1({0x7f7eb58956e0?, 0xc00e062b00?}, 0x304d6c536e6c6b49?)
	github.com/traefik/traefik/v3/pkg/middlewares/accesslog/logger.go:86 +0x3a
net/http.HandlerFunc.ServeHTTP(0xc000f2c480?, {0x7f7eb58956e0?, 0xc00e062b00?}, 0x0?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*entryPointTracing).ServeHTTP(0xc004b9ef00?, {0x7f7eb58956e0?, 0xc00e062b00?}, 0xc005a50a00?)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/entrypoint.go:52 +0x25e
github.com/traefik/traefik/v3/pkg/server/middleware.(*ObservabilityMgr).observabilityContextHandler.WithObservabilityHandler.func1({0x7f7eb58956e0, 0xc00e062b00}, 0xc005a50780)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/observability.go:28 +0x97
net/http.HandlerFunc.ServeHTTP(0xc007e77300?, {0x7f7eb58956e0?, 0xc00e062b00?}, 0x8?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/muxer/http.(*Muxer).ServeHTTP(0xc004b58090, {0x7f7eb58956e0, 0xc00e062b00}, 0xc005a50000)
	github.com/traefik/traefik/v3/pkg/muxer/http/mux.go:53 +0x151
github.com/traefik/traefik/v3/pkg/middlewares/recovery.(*recovery).ServeHTTP(0xc0059d25d0, {0x79adc38, 0xc007db4038}, 0xc005a50000)
	github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:36 +0x147
github.com/traefik/traefik/v3/pkg/middlewares/snicheck.SNICheck.ServeHTTP({{0x7957260?, 0xc0059d25d0?}, 0xc004c37e30?}, {0x79adc38, 0xc007db4038}, 0xc005a50000)
	github.com/traefik/traefik/v3/pkg/middlewares/snicheck/snicheck.go:49 +0x162
github.com/traefik/traefik/v3/pkg/middlewares.(*HTTPHandlerSwitcher).ServeHTTP(0x41c765?, {0x79adc38, 0xc007db4038}, 0xc005a50000)
	github.com/traefik/traefik/v3/pkg/middlewares/handler_switcher.go:23 +0x91
github.com/traefik/traefik/v3/pkg/middlewares/requestdecorator.(*RequestDecorator).ServeHTTP(0xc000529ce8, {0x79adc38, 0xc007db4038}, 0xc00576dcc0, 0xc006ffc970)
	github.com/traefik/traefik/v3/pkg/middlewares/requestdecorator/request_decorator.go:47 +0x2ee
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.WrapHandler.func5.1({0x79adc38?, 0xc007db4038?}, 0xc0014ca600?)
	github.com/traefik/traefik/v3/pkg/middlewares/requestdecorator/request_decorator.go:89 +0x53
net/http.HandlerFunc.ServeHTTP(0xc000771140?, {0x79adc38?, 0xc007db4038?}, 0x9?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/middlewares/forwardedheaders.(*XForwarded).ServeHTTP(0xc000771140, {0x79adc38, 0xc007db4038}, 0xc00576dcc0)
	github.com/traefik/traefik/v3/pkg/middlewares/forwardedheaders/forwarded_header.go:201 +0xc2
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.DisableAutoDetection.func7({0x79adc38, 0xc007db4038}, 0xc00576dcc0)
	github.com/traefik/traefik/v3/pkg/middlewares/contenttype/content_type.go:56 +0xc5
net/http.HandlerFunc.ServeHTTP(0x0?, {0x79adc38?, 0xc007db4038?}, 0x689005?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.encodeQuerySemicolons.func8({0x79adc38, 0xc007db4038}, 0xc00576dcc0)
	github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:803 +0x207
net/http.HandlerFunc.ServeHTTP(0xc007d8f830?, {0x79adc38?, 0xc007db4038?}, 0x5?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.sanitizePath.func10({0x79adc38, 0xc007db4038}, 0xc005719040)
	github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:821 +0x11c
net/http.HandlerFunc.ServeHTTP(0x491ebd?, {0x79adc38?, 0xc007db4038?}, 0x40df4e?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.normalizePath.func11({0x79adc38?, 0xc007db4038?}, 0x10?)
	github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:857 +0x94
net/http.HandlerFunc.ServeHTTP(0x0?, {0x79adc38?, 0xc007db4038?}, 0x0?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.denyFragment.func12({0x79adc38, 0xc007db4038}, 0xc005719040)
	github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:784 +0xee
net/http.HandlerFunc.ServeHTTP(0xc00e6d49c0?, {0x79adc38?, 0xc007db4038?}, 0xc00ba8a000?)
	net/http/server.go:2294 +0x29
net/http.serverHandler.ServeHTTP({0x6dfbe4?}, {0x79adc38?, 0xc007db4038?}, 0xc00ba8a000?)
	net/http/server.go:3301 +0x8e
net/http.initALPNRequest.ServeHTTP({{0x79ca658?, 0xc004d454a0?}, 0xc008410388?, {0xc0008ca800?}}, {0x79adc38, 0xc007db4038}, 0xc005719040)
	net/http/server.go:3974 +0x231
net/http.(*http2serverConn).runHandler(0x4501f2?, 0x0?, 0x0?, 0xc007d96000?)
	net/http/h2_bundle.go:6529 +0xf5
created by net/http.(*http2serverConn).scheduleHandler in goroutine 731
	net/http/h2_bundle.go:6463 +0x21d
 middlewareName=traefik-internal-recovery  middlewareType=Recovery
INFO: TraefikOidcPlugin: 2026/01/19 10:31:14 Redis backend health status changed from {%!s(*interp.node=&{<nil> [] 0xc002ae8280 [] 0xc002ae88c0 0xc002ae8a00 <nil> 0xc0004efd48 128401 0 0 0 0 45 2063062 0xc0068fc770 0xc0038152c0 <nil> [] 0xc0068f6990 0 <nil> 0x1e62ec0 0xc002072eb0 {<nil> <nil> 0} from false <nil>}) {%!s(*abi.Type=&{4 0 330746896 15 4 4 5 0x40fd60 0x793b860 22560 2982688}) %!s(unsafe.Pointer=0xc005295bf4) %!s(reflect.flag=389)}} to {%!s(*interp.node=&{<nil> [] 0xc002ae8280 [] 0xc002ae8a00 <nil> <nil> 0xc0004efd48 128402 1 0 0 0 45 2063068 0xc0068fc7e0 0xc0038152c0 <nil> [] 0xc0068f6990 0 <nil> 0x1e62ec0 0xc002072ec0 {<nil> <nil> 0} to false <nil>}) {%!s(*abi.Type=&{4 0 330746896 15 4 4 5 0x40fd60 0x793b860 22560 2982688}) %!s(unsafe.Pointer=0xc005295bf8) %!s(reflect.flag=389)}}
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/backends/redis_pool.go:243:5: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/backends.Do(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/backends/redis.go:134:16: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/backends.Get.func(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/backends/redis.go:350:2: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/backends.executeWithRetry(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/backends/redis.go:122:5: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/backends.Get(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/internal/cache/resilience/health_check_backend.go:62:29: panic: github.com/lukaszraczylo/traefikoidc/internal/cache/resilience.Get(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/universal_cache.go:318:5: panic: github.com/lukaszraczylo/traefikoidc.Get(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/helpers.go:253:10: panic: github.com/lukaszraczylo/traefikoidc.Get(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/token_manager.go:31:5: panic: github.com/lukaszraczylo/traefikoidc.VerifyToken(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/token_manager.go:150:9: panic: github.com/lukaszraczylo/traefikoidc.verifyToken(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/token_manager.go:817:19: panic: github.com/lukaszraczylo/traefikoidc.validateStandardTokens(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/auth_flow.go:316:5: panic: github.com/lukaszraczylo/traefikoidc.isUserAuthenticated(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/lukaszraczylo/traefikoidc/middleware.go:30:2: panic: github.com/lukaszraczylo/traefikoidc.ServeHTTP(...) module=github.com/lukaszraczylo/traefikoidc  plugin=plugin-traefikoidc  runtime=
2026-01-19T10:31:18+01:00   plugins-storage/sources/gop-663649738/src/github.com/jeppestaerk/traefik-xff-to-xrealip/main.go:39:9: panic: github.com/jeppestaerk/traefik-xff-to-xrealip.ServeHTTP(...) module=github.com/jeppestaerk/traefik-xff-to-xrealip  plugin=plugin-traefik-xff-to-xrealip  runtime=
2026-01-19T10:31:18+01:00   Recovered from panic in HTTP handler [10.0.125.244:57997 - /assets/unist-util-stringify-position-Ch_qCilz.js]: reflect: call of reflect.Value.Field on zero Value middlewareName=traefik-internal-recovery  middlewareType=Recovery
2026-01-19T10:31:18+01:00   Stack: goroutine 5099 [running]:
github.com/traefik/traefik/v3/pkg/middlewares/recovery.recoverFunc({0x79cc640, 0xc00a98c010}, 0xc00535bcc0)
	github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:52 +0x231
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
github.com/traefik/yaegi/interp.runCfg.func1()
	github.com/traefik/yaegi@v0.16.1/interp/run.go:226 +0x1ae
panic({0x60ef560?, 0xc00fbc5788?})
	runtime/panic.go:792 +0x132
reflect.Value.Field({0x0?, 0x0?, 0xc0006dfce0?}, 0xc011db4990?)
	reflect/value.go:1272 +0xcf
reflect.Value.FieldByIndex({0x0?, 0x0?, 0x0?}, {0xc003189428?, 0xc0069f5050?, 0x0?})
	reflect/value.go:1305 +0x4e
github.com/traefik/yaegi/interp.getPtrIndexSeq.func2(0x47b833?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:2110 +0xc9
github.com/traefik/yaegi/interp.runCfg(0xc0045ec640, 0xc009f9fad0, 0xc003ec1520?, 0x5d4b100?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
github.com/traefik/yaegi/interp.genFunctionWrapper.func1.1({0xc0069f4f60, 0x2, 0x8?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1042 +0x805
reflect.Value.call({0xc00470b560?, 0xc0069f4ed0?, 0x0?}, {0x6e272d2, 0x4}, {0xc0069f4f00, 0x2, 0x30?})
	reflect/value.go:584 +0xca6
reflect.Value.Call({0xc00470b560?, 0xc0069f4ed0?, 0x480849?}, {0xc0069f4f00?, 0x6dd8200?, 0xc0063bc401?})
	reflect/value.go:368 +0xb9
github.com/traefik/yaegi/interp.call.func9.2({0xc0069f4f00?, 0xc0069f4ed0?, 0x0?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1310 +0x36
github.com/traefik/yaegi/interp.call.func9(0xc009f9f970)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1330 +0xcc5
github.com/traefik/yaegi/interp.runCfg(0xc004489540, 0xc009f9f970, 0xc007b19660?, 0xc004993c40?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
github.com/traefik/yaegi/interp.getFunc.func1.1({0xc00fbc55a8, 0x1, 0x1?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1919 +0x5f5
reflect.Value.call({0xc004935c70?, 0xc013b16b80?, 0xc011db65a8?}, {0x6e272d2, 0x4}, {0xc00fbc5590, 0x1, 0x18?})
	reflect/value.go:584 +0xca6
reflect.Value.Call({0xc004935c70?, 0xc013b16b80?, 0x480849?}, {0xc00fbc5590?, 0x6dd8200?, 0x1?})
	reflect/value.go:368 +0xb9
github.com/traefik/yaegi/interp.call.func9.2({0xc00fbc5590?, 0xc013b16b80?, 0xc014b60f00?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1310 +0x36
github.com/traefik/yaegi/interp.call.func9(0xc00afeac60)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1330 +0xcc5
github.com/traefik/yaegi/interp.runCfg(0xc0044cf7c0, 0xc00afeac60, 0xc007b19640?, 0xc004935c70?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
github.com/traefik/yaegi/interp.genFunctionWrapper.func1.1({0xc001ca3860, 0x2, 0x4?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1042 +0x805
reflect.Value.call({0xc004935cc0?, 0xc001ca3740?, 0x8?}, {0x6e272d2, 0x4}, {0xc001ca3830, 0x2, 0xc001ca3800?})
	reflect/value.go:584 +0xca6
reflect.Value.Call({0xc004935cc0?, 0xc001ca3740?, 0x480849?}, {0xc001ca3830?, 0xc001ca3800?, 0xc004935c70?})
	reflect/value.go:368 +0xb9
github.com/traefik/yaegi/interp.call.func9.2({0xc001ca3830?, 0xc001ca3740?, 0x2?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1310 +0x36
github.com/traefik/yaegi/interp.call.func9(0xc00afeaa50)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1330 +0xcc5
github.com/traefik/yaegi/interp.runCfg(0xc0044848c0, 0xc00afeaa50, 0xc007b194a0?, 0x5e630a0?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
...54 frames elided...
github.com/traefik/traefik/v3/pkg/middlewares/headers.secureHeader.ServeHTTP(...)
	github.com/traefik/traefik/v3/pkg/middlewares/headers/secure.go:49
github.com/traefik/traefik/v3/pkg/middlewares/headers.(*Header).ServeHTTP(0xc007edb380, {0x79b65c0, 0xc007819c20}, 0xc0065ec3c0)
	github.com/traefik/traefik/v3/pkg/middlewares/headers/header.go:63 +0x11a
github.com/traefik/traefik/v3/pkg/middlewares/headers.(*headers).ServeHTTP(0x79ca658?, {0x79b65c0?, 0xc007819c20?}, 0x3?)
	github.com/traefik/traefik/v3/pkg/middlewares/headers/headers.go:65 +0x26
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*middlewareTracing).ServeHTTP(0xc004b9e990, {0x79b65c0, 0xc007819c20}, 0xc0065ec3c0)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:67 +0x4a9
reflect.Value.call({0x62cd4c0?, 0xc007eeb0f8?, 0x474d1c?}, {0x6e272d2, 0x4}, {0xc0049a4090, 0x2, 0x30?})
	reflect/value.go:584 +0xca6
reflect.Value.Call({0x62cd4c0?, 0xc007eeb0f8?, 0x480849?}, {0xc0049a4090?, 0x6dd8200?, 0xc011da7d01?})
	reflect/value.go:368 +0xb9
github.com/traefik/yaegi/interp.callBin.func2({0x62cd4c0?, 0xc007eeb0f8?, 0xc007bd6b00?}, {0xc0049a4090?, 0x5e630a0?, 0xc011da7da8?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1465 +0x25
github.com/traefik/yaegi/interp.callBin.func11(0xc007bd6b00)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1653 +0x158
github.com/traefik/yaegi/interp.runCfg(0xc0010d3cc0, 0xc007bd6b00, 0xc0079c9e80?, 0x6cfb900?)
	github.com/traefik/yaegi@v0.16.1/interp/run.go:234 +0x265
github.com/traefik/yaegi/interp.genFunctionWrapper.func1.1({0xc004945f20, 0x2, 0x4?})
	github.com/traefik/yaegi@v0.16.1/interp/run.go:1042 +0x805
github.com/traefik/yaegi/stdlib._net_http_Handler.ServeHTTP(...)
	github.com/traefik/yaegi@v0.16.1/stdlib/go1_22_net_http.go:296
github.com/traefik/traefik/v3/pkg/server/middleware.(*traceablePlugin).ServeHTTP(0x79ca658?, {0x79b65c0?, 0xc007819c20?}, 0x6e4cd49?)
	github.com/traefik/traefik/v3/pkg/server/middleware/plugins.go:54 +0x26
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*middlewareTracing).ServeHTTP(0xc004b9ec60, {0x79b65c0, 0xc007819c20}, 0xc0065ec3c0)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:67 +0x4a9
github.com/traefik/traefik/v3/pkg/middlewares/contenttype.(*contentType).ServeHTTP(0xc007eec380, {0x79b65c0, 0xc007819c20}, 0xc0065ec3c0)
	github.com/traefik/traefik/v3/pkg/middlewares/contenttype/content_type.go:46 +0x116
github.com/klauspost/compress/gzhttp.NewWrapper.func1.1({0x7f7eb58956e0, 0xc00a98c010}, 0xc0065ec3c0)
	github.com/klauspost/compress@v1.18.0/gzhttp/compress.go:517 +0x5df
net/http.HandlerFunc.ServeHTTP(0xc006f80868?, {0x7f7eb58956e0?, 0xc00a98c010?}, 0xc007d49a40?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/middlewares/compress.(*compress).chooseHandler(0xc007d49a40?, {0xc003f07d40?, 0x6e65423?}, {0x7f7eb58956e0?, 0xc00a98c010?}, 0x8?)
	github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:177 +0xa2
github.com/traefik/traefik/v3/pkg/middlewares/compress.(*compress).ServeHTTP(0xc007d49a40, {0x7f7eb58956e0, 0xc00a98c010}, 0xc0065ec3c0)
	github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:167 +0x29d
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*middlewareTracing).ServeHTTP(0xc004b9ee10, {0x7f7eb58956e0, 0xc00a98c010}, 0xc0065ec3c0)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:67 +0x4a9
github.com/traefik/traefik/v3/pkg/middlewares/accesslog.(*ConcatFieldHandler).ServeHTTP(0xc004b9ee40, {0x7f7eb58956e0, 0xc00a98c010}, 0xc0065ec3c0)
	github.com/traefik/traefik/v3/pkg/middlewares/accesslog/field_middleware.go:98 +0x247
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*routerTracing).ServeHTTP(0xc007edb480, {0x7f7eb58956e0, 0xc00a98c010}, 0xc0065ec3c0)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/router.go:59 +0x763
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*semConvServerMetrics).ServeHTTP(0xc004d908c0?, {0x7f7eb58956e0?, 0xc00a98c010?}, 0x4c83e5?)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/semconv.go:50 +0xeb8
github.com/traefik/traefik/v3/pkg/middlewares/accesslog.(*FieldHandler).ServeHTTP(0xc007edb540, {0x7f7eb58956e0, 0xc00a98c010}, 0xc0065ec3c0)
	github.com/traefik/traefik/v3/pkg/middlewares/accesslog/field_middleware.go:33 +0x11e
github.com/traefik/traefik/v3/pkg/middlewares/accesslog.(*Handler).ServeHTTP(0xc000770840, {0x7f7eb58956e0, 0xc00a98c010}, 0xc0065ec3c0, {0x794cd40, 0xc007edb540})
	github.com/traefik/traefik/v3/pkg/middlewares/accesslog/logger.go:212 +0x13ef
github.com/traefik/traefik/v3/pkg/server/middleware.(*ObservabilityMgr).BuildEPChain.(*Handler).AliceConstructor.func4.1({0x7f7eb58956e0?, 0xc00a98c010?}, 0xc006f81378?)
	github.com/traefik/traefik/v3/pkg/middlewares/accesslog/logger.go:86 +0x3a
net/http.HandlerFunc.ServeHTTP(0xc004945e90?, {0x7f7eb58956e0?, 0xc00a98c010?}, 0x18?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/middlewares/observability.(*entryPointTracing).ServeHTTP(0xc004b9ef00?, {0x7f7eb58956e0?, 0xc00a98c010?}, 0xc0065ec3c0?)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/entrypoint.go:52 +0x25e
github.com/traefik/traefik/v3/pkg/server/middleware.(*ObservabilityMgr).observabilityContextHandler.WithObservabilityHandler.func1({0x7f7eb58956e0, 0xc00a98c010}, 0xc0065ec140)
	github.com/traefik/traefik/v3/pkg/middlewares/observability/observability.go:28 +0x97
net/http.HandlerFunc.ServeHTTP(0xc007e77300?, {0x7f7eb58956e0?, 0xc00a98c010?}, 0x8?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/muxer/http.(*Muxer).ServeHTTP(0xc004b58090, {0x7f7eb58956e0, 0xc00a98c010}, 0xc00535bcc0)
	github.com/traefik/traefik/v3/pkg/muxer/http/mux.go:53 +0x151
github.com/traefik/traefik/v3/pkg/middlewares/recovery.(*recovery).ServeHTTP(0xc0059d25d0, {0x79adc38, 0xc0045b9aa8}, 0xc00535bcc0)
	github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:36 +0x147
github.com/traefik/traefik/v3/pkg/middlewares/snicheck.SNICheck.ServeHTTP({{0x7957260?, 0xc0059d25d0?}, 0xc004c37e30?}, {0x79adc38, 0xc0045b9aa8}, 0xc00535bcc0)
	github.com/traefik/traefik/v3/pkg/middlewares/snicheck/snicheck.go:49 +0x162
github.com/traefik/traefik/v3/pkg/middlewares.(*HTTPHandlerSwitcher).ServeHTTP(0x41c765?, {0x79adc38, 0xc0045b9aa8}, 0xc00535bcc0)
	github.com/traefik/traefik/v3/pkg/middlewares/handler_switcher.go:23 +0x91
github.com/traefik/traefik/v3/pkg/middlewares/requestdecorator.(*RequestDecorator).ServeHTTP(0xc000529ce8, {0x79adc38, 0xc0045b9aa8}, 0xc00535b400, 0xc004c0a970)
	github.com/traefik/traefik/v3/pkg/middlewares/requestdecorator/request_decorator.go:47 +0x2ee
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.WrapHandler.func5.1({0x79adc38?, 0xc0045b9aa8?}, 0xc000d6dbf0?)
	github.com/traefik/traefik/v3/pkg/middlewares/requestdecorator/request_decorator.go:89 +0x53
net/http.HandlerFunc.ServeHTTP(0xc000771140?, {0x79adc38?, 0xc0045b9aa8?}, 0x9?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/middlewares/forwardedheaders.(*XForwarded).ServeHTTP(0xc000771140, {0x79adc38, 0xc0045b9aa8}, 0xc00535b400)
	github.com/traefik/traefik/v3/pkg/middlewares/forwardedheaders/forwarded_header.go:201 +0xc2
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.DisableAutoDetection.func7({0x79adc38, 0xc0045b9aa8}, 0xc00535b400)
	github.com/traefik/traefik/v3/pkg/middlewares/contenttype/content_type.go:56 +0xc5
net/http.HandlerFunc.ServeHTTP(0x0?, {0x79adc38?, 0xc0045b9aa8?}, 0x689005?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.encodeQuerySemicolons.func8({0x79adc38, 0xc0045b9aa8}, 0xc00535b400)
	github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:803 +0x207
net/http.HandlerFunc.ServeHTTP(0xc00f80cfc0?, {0x79adc38?, 0xc0045b9aa8?}, 0x12?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.sanitizePath.func10({0x79adc38, 0xc0045b9aa8}, 0xc0054643c0)
	github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:821 +0x11c
net/http.HandlerFunc.ServeHTTP(0xc0008d07b0?, {0x79adc38?, 0xc0045b9aa8?}, 0xc0054643c0?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.normalizePath.func11({0x79adc38?, 0xc0045b9aa8?}, 0x7?)
	github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:857 +0x94
net/http.HandlerFunc.ServeHTTP(0x0?, {0x79adc38?, 0xc0045b9aa8?}, 0xc0039ee960?)
	net/http/server.go:2294 +0x29
github.com/traefik/traefik/v3/pkg/server.newHTTPServer.denyFragment.func12({0x79adc38, 0xc0045b9aa8}, 0xc0054643c0)
	github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:784 +0xee
net/http.HandlerFunc.ServeHTTP(0xc006f97540?, {0x79adc38?, 0xc0045b9aa8?}, 0x200000003?)
	net/http/server.go:2294 +0x29
net/http.serverHandler.ServeHTTP({0xc007b28a80?}, {0x79adc38?, 0xc0045b9aa8?}, 0xc006f97540?)
	net/http/server.go:3301 +0x8e
net/http.initALPNRequest.ServeHTTP({{0x79ca658?, 0xc004d454a0?}, 0xc008410388?, {0xc0008ca800?}}, {0x79adc38, 0xc0045b9aa8}, 0xc0054643c0)
	net/http/server.go:3974 +0x231
net/http.(*http2serverConn).runHandler(0x4501f2?, 0x0?, 0x7ae805?, 0xc004d49cb0?)
	net/http/h2_bundle.go:6529 +0xf5
created by net/http.(*http2serverConn).scheduleHandler in goroutine 731
	net/http/h2_bundle.go:6463 +0x21d
 middlewareName=traefik-internal-recovery  middlewareType=Recovery

Analysis / Potential Cause:

The panic reflect: call of reflect.Value.Field on zero Value originating in redis_pool.go strongly suggests an issue with the recent caching optimizations introduced around v0.8.13 (specifically PR #104 "LRU + cache conflicts prevention").

It appears that the Yaegi interpreter (which Traefik uses to run plugins) is struggling with the sync.Pool implementation or the struct reuse pattern found in internal/cache/backends/resp.go (variables readerPool / writerPool) or redis_pool.go.

When Yaegi tries to access a field on a struct retrieved from the pool, it encounters a nil/zero value where it expects a valid struct, or the reflection mechanism used by Yaegi to access the field fails.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

Status

Awaiting Feedback

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions