solo-io / wasm

Web Assembly tools and SDKs for extending cloud-native infrastructure
Apache License 2.0
305 stars 39 forks source link

Cannot have 2 root_ids in the same WASM file on cpp-istio-1.5.x from wasme boilerplate code #154

Open emayssat opened 4 years ago

emayssat commented 4 years ago

Hello,

I was trying to put several root_id in the same wasm file. That operation is supported on wasme template with cpp-gloo-1.5.x. ( <== This last statement is incorrect, doesn't work with gloo either :-( ) That being said, it is not the case for cpp-istio-1.5.x

With 2 root-ids in the same WASM file, if enable one filter (with a given root_id) it works. If I enable the other, it works too. The code that is executed is correct. But if I enable both at the same time in envoy, then it fails. The current work around is to build a WASM file for each other them.

Below is the output from my docker-compose:

sidecar_1     | [2020-08-13 23:26:43.739][6][info][config] [external/envoy/source/server/configuration_impl.cc:62] loading 0 static secret(s)
sidecar_1     | [2020-08-13 23:26:43.739][6][info][config] [external/envoy/source/server/configuration_impl.cc:68] loading 3 cluster(s)
sidecar_1     | [2020-08-13 23:26:43.741][6][info][config] [external/envoy/source/server/configuration_impl.cc:72] loading 1 listener(s)
sidecar_1     | [2020-08-13 23:26:43.744][6][warning][misc] [external/envoy/source/common/protobuf/utility.cc:441] Using deprecated option 'envoy.config.filter.network.http_connection_manager.v2.HttpFilter.config' from file http_connection_manager.proto. This configuration will be removed from Envoy soon. Please see https://www.envoyproxy.io/docs/envoy/latest/intro/deprecated for details.
sidecar_1     | [2020-08-13 23:26:43.744][6][warning][misc] [external/envoy/source/common/protobuf/utility.cc:441] Using deprecated option 'envoy.config.filter.network.http_connection_manager.v2.HttpFilter.config' from file http_connection_manager.proto. This configuration will be removed from Envoy soon. Please see https://www.envoyproxy.io/docs/envoy/latest/intro/deprecated for details.
sidecar_1     | [2020-08-13 23:26:43.765][6][debug][wasm] [bazel-out/k8-opt/bin/external/envoy/source/extensions/common/wasm/_virtual_includes/wasm_vm_base/extensions/common/wasm/wasm_vm_base.h:38] WasmVm created envoy.wasm.runtime.v8 now active
sidecar_1     | [2020-08-13 23:26:43.765][6][debug][wasm] [external/envoy/source/extensions/common/wasm/wasm.cc:121] Base Wasm created 1 now active
sidecar_1     | [2020-08-13 23:26:43.891][6][debug][wasm] [external/envoy/source/extensions/common/wasm/context.cc:1074] wasm log bundle-cpp-istio-1.5.x worker-add_header : [worker.cc:71]::onStart() >>> [1] onStart()
sidecar_1     | [2020-08-13 23:26:43.891][6][debug][wasm] [external/envoy/source/extensions/common/wasm/context.cc:1074] wasm log bundle-cpp-istio-1.5.x worker-add_header : [worker.cc:72]::onStart() <<< [1] onStart()
sidecar_1     | [2020-08-13 23:26:43.891][6][debug][wasm] [bazel-out/k8-opt/bin/external/envoy/source/extensions/common/wasm/_virtual_includes/wasm_vm_base/extensions/common/wasm/wasm_vm_base.h:38] WasmVm created envoy.wasm.runtime.v8 now active
sidecar_1     | [2020-08-13 23:26:43.914][6][debug][wasm] [external/envoy/source/extensions/common/wasm/wasm.cc:285] Thread-Local Wasm created 2 now active
sidecar_1     | [2020-08-13 23:26:43.916][6][debug][wasm] [external/envoy/source/extensions/common/wasm/context.cc:1074] wasm log bundle-cpp-istio-1.5.x worker-add_header : [worker.cc:71]::onStart() >>> [1] onStart()
sidecar_1     | [2020-08-13 23:26:43.916][6][debug][wasm] [external/envoy/source/extensions/common/wasm/context.cc:1074] wasm log bundle-cpp-istio-1.5.x worker-add_header : [worker.cc:72]::onStart() <<< [1] onStart()
sidecar_1     | [2020-08-13 23:26:43.916][6][debug][wasm] [external/envoy/source/extensions/common/wasm/context.cc:1074] wasm log bundle-cpp-istio-1.5.x worker-add_header : [worker.cc:55]::onConfigure() >>> [1] onConfigure()
sidecar_1     | [2020-08-13 23:26:43.916][6][debug][wasm] [external/envoy/source/extensions/common/wasm/context.cc:1074] wasm log bundle-cpp-istio-1.5.x worker-add_header : [worker.cc:66]::onConfigure() <<< [1] onConfigure()
sidecar_1     | [2020-08-13 23:26:43.916][6][info][config] [external/envoy/source/server/configuration_impl.cc:97] loading tracing configuration
sidecar_1     | [2020-08-13 23:26:43.916][6][info][config] [external/envoy/source/server/configuration_impl.cc:116] loading stats sink configuration
sidecar_1     | [2020-08-13 23:26:43.927][6][critical][main] [external/envoy/source/server/server.cc:96] error initializing configuration '/etc/envoy/envoy.yaml': Function: proxy_on_configure failed: Uncaught RuntimeError: function signature mismatch
sidecar_1     | [2020-08-13 23:26:43.927][6][debug][wasm] [external/envoy/source/extensions/common/wasm/wasm.cc:291] ~Wasm 1 remaining active
sidecar_1     | [2020-08-13 23:26:43.928][6][debug][wasm] [bazel-out/k8-opt/bin/external/envoy/source/extensions/common/wasm/_virtual_includes/wasm_vm_base/extensions/common/wasm/wasm_vm_base.h:42] ~WasmVm envoy.wasm.runtime.v8 1 remaining active
sidecar_1     | [2020-08-13 23:26:43.928][6][info][main] [external/envoy/source/server/server.cc:619] exiting
sidecar_1     | [2020-08-13 23:26:43.929][6][debug][wasm] [external/envoy/source/extensions/common/wasm/wasm.cc:291] ~Wasm 0 remaining active
sidecar_1     | [2020-08-13 23:26:43.930][6][debug][wasm] [bazel-out/k8-opt/bin/external/envoy/source/extensions/common/wasm/_virtual_includes/wasm_vm_base/extensions/common/wasm/wasm_vm_base.h:42] ~WasmVm envoy.wasm.runtime.v8 0 remaining active
sidecar_1     | [2020-08-13 23:26:43.930][6][critical][main] [external/envoy/source/exe/terminate_handler.cc:13] std::terminate called! (possible uncaught exception, see trace)
sidecar_1     | [2020-08-13 23:26:43.930][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:70] Backtrace (use tools/stack_decode.py to get line numbers):
sidecar_1     | [2020-08-13 23:26:43.930][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:71] Envoy version: 73f240a29bece92a8882a36893ccce07b4a54664/1.13.1-dev/Clean/RELEASE/BoringSSL
sidecar_1     | [2020-08-13 23:26:43.940][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #0: Envoy::TerminateHandler::logOnTerminate()::$_0::operator()() [0x564eece45dae]
sidecar_1     | [2020-08-13 23:26:43.951][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:77] #1: [0x564eece45cb9]
sidecar_1     | [2020-08-13 23:26:43.962][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #2: std::__terminate() [0x564eed3a8a73]
sidecar_1     | [2020-08-13 23:26:43.972][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #3: std::__1::__function::__func<>::destroy_deallocate() [0x564eeb882b96]
sidecar_1     | [2020-08-13 23:26:43.980][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #4: std::__1::__function::__func<>::destroy_deallocate() [0x564eec91270e]
sidecar_1     | [2020-08-13 23:26:43.989][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #5: std::__1::__function::__func<>::destroy_deallocate() [0x564eec913931]
sidecar_1     | [2020-08-13 23:26:43.997][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #6: Envoy::Event::DispatcherImpl::~DispatcherImpl() [0x564eec97d423]
sidecar_1     | [2020-08-13 23:26:44.007][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #7: Envoy::Event::DispatcherImpl::~DispatcherImpl() [0x564eec97d69e]
sidecar_1     | [2020-08-13 23:26:44.018][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #8: Envoy::Server::WorkerImpl::~WorkerImpl() [0x564eec975667]
sidecar_1     | [2020-08-13 23:26:44.031][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #9: Envoy::Server::ListenerManagerImpl::~ListenerManagerImpl() [0x564eec93671b]
sidecar_1     | [2020-08-13 23:26:44.039][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #10: Envoy::Server::ListenerManagerImpl::~ListenerManagerImpl() [0x564eec9368ae]
sidecar_1     | [2020-08-13 23:26:44.047][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #11: Envoy::Server::InstanceImpl::InstanceImpl() [0x564eec915031]
sidecar_1     | [2020-08-13 23:26:44.055][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #12: std::__1::make_unique<>() [0x564eeb5f8d5b]
sidecar_1     | [2020-08-13 23:26:44.065][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #13: Envoy::MainCommonBase::MainCommonBase() [0x564eeb5f897c]
sidecar_1     | [2020-08-13 23:26:44.072][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #14: Envoy::MainCommon::MainCommon() [0x564eeb5f90da]
sidecar_1     | [2020-08-13 23:26:44.079][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #15: main [0x564eeb5f7d63]
sidecar_1     | [2020-08-13 23:26:44.079][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #16: __libc_start_main [0x7fed09f0db97]
sidecar_1     | [2020-08-13 23:26:44.079][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:83] Caught Aborted, suspect faulting address 0x6
sidecar_1     | [2020-08-13 23:26:44.079][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:70] Backtrace (use tools/stack_decode.py to get line numbers):
sidecar_1     | [2020-08-13 23:26:44.079][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:71] Envoy version: 73f240a29bece92a8882a36893ccce07b4a54664/1.13.1-dev/Clean/RELEASE/BoringSSL
sidecar_1     | [2020-08-13 23:26:44.080][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #0: __restore_rt [0x7fed0a2ef890]
sidecar_1     | [2020-08-13 23:26:44.087][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:77] #1: [0x564eece45cb9]
sidecar_1     | [2020-08-13 23:26:44.087][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #2: std::__terminate() [0x564eed3a8a73]
sidecar_1     | [2020-08-13 23:26:44.087][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #3: std::__1::__function::__func<>::destroy_deallocate() [0x564eeb882b96]
sidecar_1     | [2020-08-13 23:26:44.087][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #4: std::__1::__function::__func<>::destroy_deallocate() [0x564eec91270e]
sidecar_1     | [2020-08-13 23:26:44.087][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #5: std::__1::__function::__func<>::destroy_deallocate() [0x564eec913931]
sidecar_1     | [2020-08-13 23:26:44.087][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #6: Envoy::Event::DispatcherImpl::~DispatcherImpl() [0x564eec97d423]
sidecar_1     | [2020-08-13 23:26:44.087][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #7: Envoy::Event::DispatcherImpl::~DispatcherImpl() [0x564eec97d69e]
sidecar_1     | [2020-08-13 23:26:44.087][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #8: Envoy::Server::WorkerImpl::~WorkerImpl() [0x564eec975667]
sidecar_1     | [2020-08-13 23:26:44.088][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #9: Envoy::Server::ListenerManagerImpl::~ListenerManagerImpl() [0x564eec93671b]
sidecar_1     | [2020-08-13 23:26:44.088][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #10: Envoy::Server::ListenerManagerImpl::~ListenerManagerImpl() [0x564eec9368ae]
sidecar_1     | [2020-08-13 23:26:44.088][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #11: Envoy::Server::InstanceImpl::InstanceImpl() [0x564eec915031]
sidecar_1     | [2020-08-13 23:26:44.088][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #12: std::__1::make_unique<>() [0x564eeb5f8d5b]
sidecar_1     | [2020-08-13 23:26:44.088][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #13: Envoy::MainCommonBase::MainCommonBase() [0x564eeb5f897c]
sidecar_1     | [2020-08-13 23:26:44.088][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #14: Envoy::MainCommon::MainCommon() [0x564eeb5f90da]
sidecar_1     | [2020-08-13 23:26:44.088][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #15: main [0x564eeb5f7d63]
sidecar_1     | [2020-08-13 23:26:44.088][6][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #16: __libc_start_main [0x7fed09f0db97]
sidecar_1     | Aborted
emayssat commented 4 years ago

After retrying, I confirm that it does NOT work for cpp-gloo-1.5.x either. I can compile both root_id in the same file, but envoy only wants a root_id per wasm file at this time. Maybe a work around is to duplicate/copy the wasm file and load the same content under different names.