mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-21 05:34:18 +08:00
Summary: We currently build breakpad from [this fork](https://github.com/driazati/breakpad) to include extra logic to restore signal handlers that were previously present. With some [new additions](https://github.com/google/breakpad/compare/main...driazati:main) this fork now includes a CMake based build, so we can add breakpad as a proper dependency rather than rely on including it in Docker images as a system library which is error prone (we have a bunch of images) and hard to extend to MacOS / Windows. This also includes some changes to the crash handling code to support MacOS / Windows in a similar way to Linux. ```python import torch # On Windows this writes crashes to C:\Users\<user>\AppData\pytorch_crashes # On MacOS/Linux this writes crashes to /tmp/pytorch_crashes torch.utils._crash_handler.enable_minidumps() # Easy way to cause a segfault and trigger the handler torch.bincount(input=torch.tensor([9223372036854775807])) ``` Pull Request resolved: https://github.com/pytorch/pytorch/pull/63186 Reviewed By: malfet, seemethere Differential Revision: D30318404 Pulled By: driazati fbshipit-source-id: 0d7daf3701cfaba5451cc529a0730272ab1eb1dc
26 lines
673 B
Python
26 lines
673 B
Python
import os
|
|
import sys
|
|
import pathlib
|
|
|
|
import torch
|
|
|
|
DEFAULT_MINIDUMP_DIR = "/tmp/pytorch_crashes"
|
|
if sys.platform == "win32":
|
|
DEFAULT_MINIDUMP_DIR = str(pathlib.Path.home() / "AppData" / "pytorch_crashes")
|
|
|
|
def enable_minidumps(directory=DEFAULT_MINIDUMP_DIR):
|
|
if directory == DEFAULT_MINIDUMP_DIR:
|
|
pathlib.Path(directory).mkdir(parents=True, exist_ok=True)
|
|
elif not os.path.exists(directory):
|
|
raise RuntimeError(f"Directory does not exist: {directory}")
|
|
|
|
torch._C._enable_minidumps(directory)
|
|
|
|
|
|
def enable_minidumps_on_exceptions():
|
|
torch._C._enable_minidumps_on_exceptions()
|
|
|
|
|
|
def disable_minidumps():
|
|
torch._C._disable_minidumps()
|