<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 1368: Thread safety of std::uncaught_exception()</title>
<meta property="og:title" content="Issue 1368: Thread safety of std::uncaught_exception()">
<meta property="og:description" content="C++ library issue. Status: C++11">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue1368.html">
<meta property="og:type" content="website">
<meta property="og:image" content="http://cplusplus.github.io/LWG/images/cpp_logo.png">
<meta property="og:image:alt" content="C++ logo">
<style>
  p {text-align:justify}
  li {text-align:justify}
  pre code.backtick::before { content: "`" }
  pre code.backtick::after { content: "`" }
  blockquote.note
  {
    background-color:#E0E0E0;
    padding-left: 15px;
    padding-right: 15px;
    padding-top: 1px;
    padding-bottom: 1px;
  }
  ins {background-color:#A0FFA0}
  del {background-color:#FFA0A0}
  table.issues-index { border: 1px solid; border-collapse: collapse; }
  table.issues-index th { text-align: center; padding: 4px; border: 1px solid; }
  table.issues-index td { padding: 4px; border: 1px solid; }
  table.issues-index td:nth-child(1) { text-align: right; }
  table.issues-index td:nth-child(2) { text-align: left; }
  table.issues-index td:nth-child(3) { text-align: left; }
  table.issues-index td:nth-child(4) { text-align: left; }
  table.issues-index td:nth-child(5) { text-align: center; }
  table.issues-index td:nth-child(6) { text-align: center; }
  table.issues-index td:nth-child(7) { text-align: left; }
  table.issues-index td:nth-child(5) span.no-pr { color: red; }
  @media (prefers-color-scheme: dark) {
     html {
        color: #ddd;
        background-color: black;
     }
     ins {
        background-color: #225522
     }
     del {
        background-color: #662222
     }
     a {
        color: #6af
     }
     a:visited {
        color: #6af
     }
     blockquote.note
     {
        background-color: rgba(255, 255, 255, .10)
     }
  }
</style>
</head>
<body>
<hr>
<p><em>This page is a snapshot from the LWG issues list, see the <a href="lwg-active.html">Library Active Issues List</a> for more information and the meaning of <a href="lwg-active.html#C++11">C++11</a> status.</em></p>
<h3 id="1368"><a href="lwg-defects.html#1368">1368</a>. Thread safety of <code>std::uncaught_exception()</code></h3>
<p><b>Section:</b> 99 [depr.uncaught] <b>Status:</b> <a href="lwg-active.html#C++11">C++11</a>
 <b>Submitter:</b> BSI <b>Opened:</b> 2010-08-25 <b>Last modified:</b> 2017-06-15</p>
<p><b>Priority: </b>Not Prioritized
</p>
<p><b>View all issues with</b> <a href="lwg-status.html#C++11">C++11</a> status.</p>
<p><b>Discussion:</b></p>
<p><b>Addresses GB-73</b></p>
<p>
The thread safety <code>std::uncaught_exception()</code> and the
result of the function when multiple threads throw
exceptions at the same time are unspecified. To make the
function safe to use in the presence of exceptions in
multiple threads the specification needs to be updated.
</p>

<p><i>[
Resolution proposed by ballot comment
]</i></p>

<p>
Update this clause to support safe calls from
multiple threads without placing synchronization
requirements on the user.
</p>

<p><i>[
2010 Batavia Concurrency group provides a Proposed Resolution
]</i></p>


<p><i>[
Adopted at 2010-11 Batavia
]</i></p>




<p id="res-1368"><b>Proposed resolution:</b></p>
<p>Change 99 [uncaught] p. 1 as follows:</p>
<p>
<i>Returns</i>: <code>true</code> after <ins> the current thread has initialized </ins><del>initializing</del>
 an exception object (15.1) until a handler for the exception (including <code>unexpected()</code> or <code>terminate()</code>) 
 is activated (15.3). [ <i>Note</i>: This includes stack unwinding (15.2). &mdash; <i>end note</i> ]
</p>






</body>
</html>
