Skip to content

Race condition with #import #2161

Open
@bdbaddog

Description

@bdbaddog

This issue was originally created at: 2008-08-04 14:23:10.
This issue was reported by: jonasolsson.
jonasolsson said at 2008-08-04 14:23:10

With Microsoft compiler when the compiler encounters a #import <foo.tlb> it will generate a foo.tlh and a foo.tli. If there are multiple compiles in parallel there is a race condition on who creates the *.tlh and you tend to get permission denied errors.

The C scanner currently finds the #import'ed files, but does not handle them any different than the #include'd files. Assuming the scanner could be either enhanced to separate the two kinds of files, or simplified to only find the #include'd files and then adding a new scanner for the #imported'ed files. Then the list of #import'ed files could be used to control what compiles can be run in parallell, by using SideEffect() or other means.

jonasolsson said at 2008-08-04 14:35:28

Add missing warning message.

jonasolsson said at 2008-08-04 14:37:59

Ignore the previous comment, it was intended for issue 2158.

gregnoel said at 2008-08-12 11:22:44

Bug party triage. SCons has SideEffect() to prevent multiple processes from opening the same file, but that would cause all compiles that refer to the same header to be run sequentially, which may prohibit any asynchronous compiles.

In the meantime, the workaround is to pick one compile to build the file and use Depends() to make that compile the producers of the file and further Depends() to make the other compiles the consumer of the file. That would make one compile synchronous, but the rest would be asynchronous.

Ask on the users' mailing list if you need help making this work.

stevenknight said at 2009-11-10 18:00:19

stevenknight => issues@scons

Votes for this issue: 1.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions