<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>315236</bug_id>
          
          <creation_ts>2026-05-20 15:19:30 -0700</creation_ts>
          <short_desc>Content rule list store may end up copying compiled bytecode files</short_desc>
          <delta_ts>2026-05-21 10:32:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=315135</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>252846</blocked>
    
    <blocked>267774</blocked>
    
    <blocked>291796</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrian Perez">aperez</reporter>
          <assigned_to name="Adrian Perez">aperez</assigned_to>
          <cc>nekohayo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2212696</commentid>
    <comment_count>0</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2026-05-20 15:19:30 -0700</bug_when>
    <thetext>When compiling a JSON rule list, the flow is roughly:

  1. Calculate the destination location for the compiled file.
  2. Create a temporary file, using WTF::openTemporaryFile().
  3. Write compiled bytecode to the temporary file.
  4. Delete the destination file (if exists).
  5. Use WTF::moveFile() to “rename” the temporary file in the final location.

The issue here is that (2.) uses a platform-dependent temporary directory for
created temporary files, and for some ports it can easily end up being in a file
system different than the final destination, resulting in WTF::moveFile() falling
back to a *synchronous* copy.

Case example: the GTK and WPE ports use g_get_tmp_dir() for the temporary
file location, which most of the time will be /tmp. On modern Linux distributions
and embedded devices this can very easily be in-memory (tmpfs), and/or the
user&apos;s home directory (where programs will configure the ContentRuleListStore
data directory) may be on its own volume.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2212714</commentid>
    <comment_count>1</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2026-05-20 16:02:04 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/65336</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2212998</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-05-21 10:31:23 -0700</bug_when>
    <thetext>Committed 313681@main (0a4e6af65950): &lt;https://commits.webkit.org/313681@main&gt;

Reviewed commits have been landed. Closing PR #65336 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2212999</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-05-21 10:32:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/177635088&gt;</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>