[MacPorts] #2724: [BUG] Interrupting an activation phase can lead to file_map.db corruption

MacPorts noreply at macports.org
Thu Dec 17 11:34:58 PST 2009


#2724: [BUG] Interrupting an activation phase can lead to file_map.db corruption
---------------------------+------------------------------------------------
  Reporter:  kevin@…       |       Owner:  pguyot@…           
      Type:  defect        |      Status:  closed             
  Priority:  Normal        |   Milestone:                     
 Component:  base          |     Version:                     
Resolution:  fixed         |    Keywords:                     
      Port:                |  
---------------------------+------------------------------------------------
Changes (by jmr@…):

  * milestone:  MacPorts Future =>


Old description:

> I interrupted DarwinPorts during an activation phase and it left me with
> a severely-truncated
> file_map.db file. I'm guessing that DarwinPorts doesn't bother trapping
> that signal (I simply hit ^C) and I
> hit it during the filemap save method. DarwinPorts should either trap the
> signal to clean up nicely, or
> saving the file_map.db file should do an atomic save (i.e. save it in the
> temporary directory, then use an
> OS-provided atomic swap of the temp file and the original file_map.db
> file - if no atomic swap method
> exists for the given OS (I know Cocoa and Carbon provide atomic swap
> methods, but I don't know about
> darwin), go ahead and swap the two non-atomically - it's still dangerous,
> but far less than saving over
> file_map.db)

New description:

 I interrupted DarwinPorts during an activation phase and it left me with a
 severely-truncated
 file_map.db file. I'm guessing that DarwinPorts doesn't bother trapping
 that signal (I simply hit ^C) and I
 hit it during the filemap save method. DarwinPorts should either trap the
 signal to clean up nicely, or
 saving the file_map.db file should do an atomic save (i.e. save it in the
 temporary directory, then use an
 OS-provided atomic swap of the temp file and the original file_map.db file
 - if no atomic swap method
 exists for the given OS (I know Cocoa and Carbon provide atomic swap
 methods, but I don't know about
 darwin), go ahead and swap the two non-atomically - it's still dangerous,
 but far less than saving over
 file_map.db)

--

-- 
Ticket URL: <http://trac.macports.org/ticket/2724#comment:6>
MacPorts <http://www.macports.org/>
Ports system for Mac OS


More information about the macports-tickets mailing list