google / google/cppdap

possibly memory leak reported by valgrind

オープン
#122 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C++
スター
192
フォーク
66
PR マージ指標
30日以内にマージされた PR はありません

説明

Hi all,
I created a demo application based on the 1.58.0-a version of this DAP implementation.
After doing the memory check by the valgrind tool, I get a possibly lost report as following:

```sh
--------------------------------------------------------
672 bytes in 2 blocks are possibly lost in loss record 578 of 581
--------------------------------------------------------
at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
by 0x40147D9: calloc (rtld-malloc.h:44)
by 0x40147D9: allocate_dtv (dl-tls.c:375)
by 0x40147D9: _dl_allocate_tls (dl-tls.c:634)
by 0x819E7B4: allocate_stack (allocatestack.c:430)
by 0x819E7B4: pthread_create@@GLIBC_2.34 (pthread_create.c:647)
by 0x7EB2328: std::thread::_M_start_thread(std::unique_ptr >, void (*)()) (no file available)
by 0x7CB3AA9: std::thread::thread<(anonymous namespace)::Impl::startProcessingMessages(std::function const&)::{lambda()#1}, , void>((anonymous namespace)::Impl::startProcessingMessages(std::function const&)::{lambda()#1}&&) (std_thread.h:143)
by 0x7CAF1AD: (anonymous namespace)::Impl::startProcessingMessages(std::function const&) (session.cpp:86)
by 0x4BAEEE: dap::Session::bind(std::shared_ptr const&, std::shared_ptr const&, std::function const&) (session.h:450)
by 0x4BAF57: dap::Session::bind(std::shared_ptr const&, std::function const&) (session.h:455)
```

When I investigated the call stack, I found it was caused by a termination of the `dispatchingThread` and `recvThread` without `join` procedure.

Finally, I found the root cause is destructor method at "session.cpp:~Impl()" missing the `virtual` keyword.
After modifying `~Impl()` to `virtual ~Impl()`, the issue disappeared.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。