envoyproxy / envoyproxy/envoy

bug: lambda captures destruction order not determined.

Open
#7,184 3 comments 0 reactions 0 assignees View on GitHub
bug help wanted
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 22h
Merged PRs (30d)
430

Description

*Title*: [BUG] lambda captures destruction order not determined in http ConnectionManagerImpl factory callback.

*Description*:
> In envoy/source/extensions/filters/network/http_connection_manager/config.cc when return the ConnectionManagerImpl factory callback, the created HttpConnectionManagerConfig instance "filter_config" takes reference of objects held by shared_ptr route_config_provider_manager and date_provider etc.

Per https://en.cppreference.com/w/cpp/language/lambda the order of captures construction(so destruction as well) is not determined. This may cause issue during destruction of the "filter_config" object.

*Repro steps*:
> It's kinda hard to reproduce as it's compiler dependent.
but a easy fix is to fix the order by capturing them in a temp struct or something similar before diving into the lambda.

**Note**: N/A

*Admin and Stats Output*: N/A
*Config*: N/A

*Logs*:N/A
*Call Stack*:N/A

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.