Skip to content
  • Richard Purdie's avatar
    bitbake: bitbake-worker: Guard against multiprocessing corruption of event data · 1e467b33
    Richard Purdie authored
    
    
    In the forked child, we may use multiprocessing. There is only one event
    pipe to the worker controlling process and if we're unlucky, multiple
    processes can write to it at once corrupting the data by intermixing it.
    
    We don't see this often but when we do, its quite puzzling. I suspect it
    only happens in tasks which use multiprocessng (do_rootfs, do_package)
    and is much more likely to happen when we have long messages, usually many
    times PAGE_SIZE since PAGE_SIZE writes are atomic. This makes it much more
    likely within do_roofs, when for example a subprocess lists the contents
    of a rootfs.
    
    To fix this, we give each child a Lock() object and use this to serialise
    writes to the controlling worker.
    
    (Bitbake rev: 3cb55bdf06148943960e438291f9a562857340a3)
    
    Signed-off-by: default avatarRichard Purdie <richard.purdie@linuxfoundation.org>
    1e467b33