<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 - Crash at llvm_gcda_emit_arcs or llvm_gcda_emit_function when running multiple processes"
   href="https://bugs.llvm.org/show_bug.cgi?id=35464">35464</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Crash at llvm_gcda_emit_arcs or llvm_gcda_emit_function when running multiple processes
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>compiler-rt
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

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

        <tr>
          <th>OS</th>
          <td>Linux
          </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>compiler-rt
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>mcastelluccio@mozilla.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>There's still something that causes inconsistencies when multiple processes are
writing the same gcda files.

I have noticed these crashes, intermittently, in Firefox xpcshell and jittest
suites, which are running several instances of Firefox in parallel.

The crash usually occurs either in llvm_gcda_emit_arcs or in
llvm_gcda_emit_function, when a process opens a file that has already been
written by another. It never happens when the file is new.

I have a patch that seems to fix this problem. The fix is to flush the file
buffers before unlocking the file. Currently, the flush is done with fclose
after the file is unlocked. So, between the unlocking and the flushing, there
might be other processes opening the file and mapping it in memory when it
hasn't been completely written yet. So, the process ends up writing outside the
mapped memory and crashes.</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>