diff --git a/clang/test/Verify/crash_report_url.cpp b/clang/test/Verify/crash_report_url.cpp new file mode 100644 index 0000000000..9d71526328 --- /dev/null +++ b/clang/test/Verify/crash_report_url.cpp @@ -0,0 +1,9 @@ +// REQUIRES: crash-recovery, backtrace +// RUN: not --crash %cpp-verify %s -- -std=c++17 2>&1 | FileCheck %s +// RUN: not --crash %clang_cc1 -std=c++17 -fverify-contracts -fsyntax-only %s 2>&1 | FileCheck %s +// +// A crash asks for a report on cpp-verify's issue tracker. + +#pragma clang __debug crash + +// CHECK: PLEASE submit a bug report to https://github.com/SwayamInSync/cpp-verify/issues/ and include the crash backtrace diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 9340cd6c45..0d156b330e 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -470,7 +470,7 @@ option(LLVM_TOOL_LLVM_DRIVER_BUILD "Enables building the llvm multicall tool" OF set(PACKAGE_NAME LLVM) set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") -set(PACKAGE_BUGREPORT "https://github.com/llvm/llvm-project/issues/") +set(PACKAGE_BUGREPORT "https://github.com/SwayamInSync/cpp-verify/issues/") set(BUG_REPORT_URL "${PACKAGE_BUGREPORT}" CACHE STRING "Default URL where bug reports are to be submitted.") diff --git a/website/source/language/tooling.rst b/website/source/language/tooling.rst index e01e583bb8..8337297d13 100644 --- a/website/source/language/tooling.rst +++ b/website/source/language/tooling.rst @@ -127,6 +127,24 @@ works with 1.4: a query that needs a constant array, as every one over sets, mul and maps does, sets cvc5's ``arrays-exp`` option itself, which 1.4 requires. Every Lean project pins ``leanprover/lean4:v4.32.2``. +When cpp-verify crashes +~~~~~~~~~~~~~~~~~~~~~~~ + +A crash is a bug in cpp-verify, never a verdict about the program. The process +stops with a stack dump that starts like this: + +.. code-block:: text + + PLEASE submit a bug report to https://github.com/SwayamInSync/cpp-verify/issues/ and include the crash backtrace and instructions to reproduce the bug. + Stack dump: + 0. Program arguments: cpp-verify crash.cpp -- + +Report it there with the whole output, the command, the output of +``cpp-verify --version``, and the smallest source that reproduces it. ``clang++`` +from the same build names the same address. A build directory configured before +0.2 keeps LLVM's address in its CMake cache; configure it again with +``-UBUG_REPORT_URL``, or use a new one. + Options that select a backend, and options a run would not use ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/website/source/release-notes.rst b/website/source/release-notes.rst index b8abf5d90b..edab7b6afa 100644 --- a/website/source/release-notes.rst +++ b/website/source/release-notes.rst @@ -132,6 +132,10 @@ line was printed and then ignored, and a ``.h`` input was compiled as C. Now the file with the error is not verified and ``cpp-verify`` exits with status 1, and a header is C++ (:doc:`language/tooling`). +**Crash reports go to cpp-verify.** A crash asked for a report on LLVM's issue +tracker. It now names https://github.com/SwayamInSync/cpp-verify/issues/, in +``cpp-verify`` and in the ``clang++`` it is built with (:doc:`language/tooling`). + **Long expressions.** An expression with hundreds of operations used memory with the cube of its depth, and one with thousands crashed. The cost is now quadratic (a 250-term sum lowers in about 5 s instead of 120 s), and an