<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Refactor all LLVM tools to use a common output file management library"
   href="https://bugs.llvm.org/show_bug.cgi?id=34070">34070</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Refactor all LLVM tools to use a common output file management library
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Support Libraries
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>rnk@google.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>LLVM tools generally produce output and write it to a file. However, they all
do it with varying levels of good behavior. Ideally, a tool has these
properties:

1. Atomicity: Regardless of how the tool exits (success, crash, SIGKILL) the
output file should either be complete and valid, or it does not exist.
2. No leaks: During normal operation (successful execution or crash, but not
SIGKILL), no temporary files should be left behind after the tool exits.

We need to beef up ToolOutputFile and FileOutputBuffer to have these
properties, and then refactor all LLVM tools to use them. Right now, neither
successfully deletes their temporary files on Windows because we keep the file
descriptors open.

Ideally, we should deprecate RemoveFileOnSignal and sink all this logic into
Support.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>