Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix out-of-range access to vector. #723

Merged
merged 1 commit into from
Sep 12, 2024
Merged

Conversation

Databean
Copy link
Member

The command cvd --group_name=cvd_1 --instance_name=1 was failing with a segmentation fault. Valgrind reported an invalid memory access.

==2063245== Invalid read of size 8
==2063245==    at 0x4B6ED26: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33)
==2063245==    by 0x4B6F20C: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33)
==2063245==    by 0x6FE9FF: cuttlefish::ParseInvocation(cuttlefish::cvd::Request const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5EEA6B: cuttlefish::AcloudCommand::CanHandle(cuttlefish::RequestWithStdio const&) const (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5532A7: cuttlefish::RequestHandler(cuttlefish::RequestWithStdio const&, std::vector<std::unique_ptr<cuttlefish::CvdServerHandler, std::default_delete<cuttlefish::CvdServerHandler> >, std::allocator<std::unique_ptr<cuttlefish::CvdServerHandler, std::default_delete<cuttlefish::CvdServerHandler> > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5531CC: cuttlefish::RequestContext::Handler(cuttlefish::RequestWithStdio const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x4932F7: cuttlefish::Cvd::HandleCommand(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x493F0D: cuttlefish::Cvd::HandleCvdCommand(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x46C42C: cuttlefish::(anonymous namespace)::CvdMain(int, char**, char**, android::base::LogSeverity) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x46DD84: main (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==  Address 0x6188738 is 8 bytes after a block of size 32 alloc'd
==2063245==    at 0x4840F83: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==2063245==    by 0x485227: std::__new_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::allocate(unsigned long, void const*) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x48321E: std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_allocate(unsigned long) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x4BA980: void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x4B6E86: std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x6FE929: cuttlefish::ParseInvocation(cuttlefish::cvd::Request const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5EEA6B: cuttlefish::AcloudCommand::CanHandle(cuttlefish::RequestWithStdio const&) const (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5532A7: cuttlefish::RequestHandler(cuttlefish::RequestWithStdio const&, std::vector<std::unique_ptr<cuttlefish::CvdServerHandler, std::default_delete<cuttlefish::CvdServerHandler> >, std::allocator<std::unique_ptr<cuttlefish::CvdServerHandler, std::default_delete<cuttlefish::CvdServerHandler> > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5531CC: cuttlefish::RequestContext::Handler(cuttlefish::RequestWithStdio const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x4932F7: cuttlefish::Cvd::HandleCommand(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x493F0D: cuttlefish::Cvd::HandleCvdCommand(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x46C42C: cuttlefish::(anonymous namespace)::CvdMain(int, char**, char**, android::base::LogSeverity) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)

Reproduced by

$ bazel build cuttlefish:cvd
$ bazel run cuttlefish:cvd -- --group_name=cvd_1 --instance_name=1
$ valgrind bazel-bin/cuttlefish/cvd --group_name=cvd_1 --instance_name=1

The command cvd --group_name=cvd_1 --instance_name=1 looks like it should have more than 1 member in the argv std::vector, but I suspect some intermediate layer is stripping out "selector arguments" before it makes it to this call.

Bug: b/366040241
Test: bazel run cuttlefish:cvd -- --group_name=cvd_1 --instance_name=1

@GoogleCuttlefishTesterBot GoogleCuttlefishTesterBot removed the kokoro:run Run e2e tests. label Sep 11, 2024
The command `cvd --group_name=cvd_1 --instance_name=1` was failing with
a segmentation fault. Valgrind reported an invalid memory access.

```
==2063245== Invalid read of size 8
==2063245==    at 0x4B6ED26: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33)
==2063245==    by 0x4B6F20C: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33)
==2063245==    by 0x6FE9FF: cuttlefish::ParseInvocation(cuttlefish::cvd::Request const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5EEA6B: cuttlefish::AcloudCommand::CanHandle(cuttlefish::RequestWithStdio const&) const (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5532A7: cuttlefish::RequestHandler(cuttlefish::RequestWithStdio const&, std::vector<std::unique_ptr<cuttlefish::CvdServerHandler, std::default_delete<cuttlefish::CvdServerHandler> >, std::allocator<std::unique_ptr<cuttlefish::CvdServerHandler, std::default_delete<cuttlefish::CvdServerHandler> > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5531CC: cuttlefish::RequestContext::Handler(cuttlefish::RequestWithStdio const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x4932F7: cuttlefish::Cvd::HandleCommand(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x493F0D: cuttlefish::Cvd::HandleCvdCommand(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x46C42C: cuttlefish::(anonymous namespace)::CvdMain(int, char**, char**, android::base::LogSeverity) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x46DD84: main (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==  Address 0x6188738 is 8 bytes after a block of size 32 alloc'd
==2063245==    at 0x4840F83: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==2063245==    by 0x485227: std::__new_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::allocate(unsigned long, void const*) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x48321E: std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_allocate(unsigned long) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x4BA980: void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x4B6E86: std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x6FE929: cuttlefish::ParseInvocation(cuttlefish::cvd::Request const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5EEA6B: cuttlefish::AcloudCommand::CanHandle(cuttlefish::RequestWithStdio const&) const (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5532A7: cuttlefish::RequestHandler(cuttlefish::RequestWithStdio const&, std::vector<std::unique_ptr<cuttlefish::CvdServerHandler, std::default_delete<cuttlefish::CvdServerHandler> >, std::allocator<std::unique_ptr<cuttlefish::CvdServerHandler, std::default_delete<cuttlefish::CvdServerHandler> > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x5531CC: cuttlefish::RequestContext::Handler(cuttlefish::RequestWithStdio const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x4932F7: cuttlefish::Cvd::HandleCommand(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x493F0D: cuttlefish::Cvd::HandleCvdCommand(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
==2063245==    by 0x46C42C: cuttlefish::(anonymous namespace)::CvdMain(int, char**, char**, android::base::LogSeverity) (in /usr/local/google/home/schuffelen/.cache/bazel/_bazel_schuffelen/e5255ea4f0651a267b9880f9e2ad5869/execroot/_main/bazel-out/k8-fastbuild/bin/cuttlefish/cvd)
```

Reproduced by
```
$ bazel build cuttlefish:cvd
$ bazel run cuttlefish:cvd -- --group_name=cvd_1 --instance_name=1
$ valgrind bazel-bin/cuttlefish/cvd --group_name=cvd_1 --instance_name=1
```

The command `cvd --group_name=cvd_1 --instance_name=1` looks like it
should have more than 1 member in the argv `std::vector`, but I suspect
some intermediate layer is stripping out "selector arguments" before it
makes it to this call.

Bug: b/366040241
Test: bazel run cuttlefish:cvd -- --group_name=cvd_1 --instance_name=1
@Databean Databean merged commit b7d212f into google:main Sep 12, 2024
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants