https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107857

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Could you please run this and paste the output here?

#include <mutex>
#include <shared_mutex>
#include <condition_variable>
#include <iostream>
#include <processthreadsapi.h>

unsigned long
muh_handles()
{
    unsigned long n = 0;
    if (GetProcessHandleCount(GetCurrentProcess(), &n))
      return n;
    throw;
}

int main()
{
  int start, end;

  start = muh_handles();
  {
    std::mutex m;
    m.lock();
    m.unlock();
  }
  end = muh_handles();
  std::cout << "Handles leaked by std::mutex: " << (end - start) << std::endl;

  start = end;
  {
    std::recursive_mutex m;
    m.lock();
    m.unlock();
  }
  end = muh_handles();
  std::cout << "Handles leaked by std::recursive_mutex: " << (end - start) <<
std::endl;

  start = end;
  {
    std::timed_mutex m;
    m.lock();
    m.unlock();
  }
  end = muh_handles();
  std::cout << "Handles leaked by std::timed_mutex: " << (end - start) <<
std::endl;

  start = end;
  {
    std::recursive_timed_mutex m;
    m.lock();
    m.unlock();
  }
  end = muh_handles();
  std::cout << "Handles leaked by std::recursive_timed_mutex: " << (end -
start) << std::endl;

  start = end;
  {
    std::shared_mutex m;
    m.lock();
    m.unlock();
  }
  end = muh_handles();
  std::cout << "Handles leaked by std::shared_mutex: " << (end - start) <<
std::endl;

  start = end;
  {
    std::shared_timed_mutex m;
    m.lock();
    m.unlock();
  }
  end = muh_handles();
  std::cout << "Handles leaked by std::shared_timed_mutex: " << (end - start)
<< std::endl;

  start = end;
  {
    std::mutex m;
    std::unique_lock<std::mutex> l(m);
    std::condition_variable cv;
    cv.wait_for(l, std::chrono::seconds(0));
  }
  end = muh_handles();
  std::cout << "Handles leaked by std::condition_variable: " << (end - start)
<< std::endl;
}

I tried to check it on Wine, but the Windows function isn't implemented:
012c:fixme:process:NtQueryInformationProcess ProcessHandleCount
(0xffffffffffffffff,0x7ffffe2ffdfc,0x00000004,(nil)) stub

Reply via email to