envoyproxy/envoy

bug: lambda captures destruction order not determined.

Open

#7,184 创建于 2019年6月5日

在 GitHub 查看
 (3 评论) (0 反应) (0 负责人)C++ (5,373 fork)batch import
bughelp wanted

仓库指标

Star
 (27,997 star)
PR 合并指标
 (平均合并 8天) (30 天内合并 378 个 PR)

描述

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

贡献者指南