summaryrefslogtreecommitdiff
path: root/boost/stacktrace/detail/safe_dump_win.ipp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/stacktrace/detail/safe_dump_win.ipp')
-rw-r--r--boost/stacktrace/detail/safe_dump_win.ipp38
1 files changed, 22 insertions, 16 deletions
diff --git a/boost/stacktrace/detail/safe_dump_win.ipp b/boost/stacktrace/detail/safe_dump_win.ipp
index 26f0516c01..23e81aab48 100644
--- a/boost/stacktrace/detail/safe_dump_win.ipp
+++ b/boost/stacktrace/detail/safe_dump_win.ipp
@@ -1,4 +1,4 @@
-// Copyright Antony Polukhin, 2016-2017.
+// Copyright Antony Polukhin, 2016-2018.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
@@ -16,43 +16,49 @@
#include <boost/core/noncopyable.hpp>
-#include <boost/detail/winapi/get_current_process.hpp>
-#include <boost/detail/winapi/file_management.hpp>
-#include <boost/detail/winapi/handles.hpp>
-#include <boost/detail/winapi/access_rights.hpp>
+#include <boost/winapi/get_current_process.hpp>
+#include <boost/winapi/file_management.hpp>
+#include <boost/winapi/handles.hpp>
+#include <boost/winapi/access_rights.hpp>
namespace boost { namespace stacktrace { namespace detail {
-std::size_t dump(void* fd, const native_frame_ptr_t* frames, std::size_t frames_count) BOOST_NOEXCEPT {
- boost::detail::winapi::DWORD_ written;
- const boost::detail::winapi::DWORD_ bytes_to_write = static_cast<boost::detail::winapi::DWORD_>(
+std::size_t dump(void* /*fd*/, const native_frame_ptr_t* /*frames*/, std::size_t /*frames_count*/) BOOST_NOEXCEPT {
+#if 0 // This code potentially could cause deadlocks (according to the MSDN). Disabled
+ boost::winapi::DWORD_ written;
+ const boost::winapi::DWORD_ bytes_to_write = static_cast<boost::winapi::DWORD_>(
sizeof(native_frame_ptr_t) * frames_count
);
- if (!boost::detail::winapi::WriteFile(fd, frames, bytes_to_write, &written, 0)) {
+ if (!boost::winapi::WriteFile(fd, frames, bytes_to_write, &written, 0)) {
return 0;
}
return frames_count;
+#endif
+ return 0;
}
-std::size_t dump(const char* file, const native_frame_ptr_t* frames, std::size_t frames_count) BOOST_NOEXCEPT {
- void* const fd = boost::detail::winapi::CreateFileA(
+std::size_t dump(const char* /*file*/, const native_frame_ptr_t* /*frames*/, std::size_t /*frames_count*/) BOOST_NOEXCEPT {
+#if 0 // This code causing deadlocks on some platforms. Disabled
+ void* const fd = boost::winapi::CreateFileA(
file,
- boost::detail::winapi::GENERIC_WRITE_,
+ boost::winapi::GENERIC_WRITE_,
0,
0,
- boost::detail::winapi::CREATE_ALWAYS_,
- boost::detail::winapi::FILE_ATTRIBUTE_NORMAL_,
+ boost::winapi::CREATE_ALWAYS_,
+ boost::winapi::FILE_ATTRIBUTE_NORMAL_,
0
);
- if (fd == boost::detail::winapi::invalid_handle_value) {
+ if (fd == boost::winapi::invalid_handle_value) {
return 0;
}
const std::size_t size = boost::stacktrace::detail::dump(fd, frames, frames_count);
- boost::detail::winapi::CloseHandle(fd);
+ boost::winapi::CloseHandle(fd);
return size;
+#endif
+ return 0;
}
}}} // namespace boost::stacktrace::detail