Opened 10 years ago

Last modified 11 months ago

#1146 new defect

create-temporary-file and create-temporary-directory are subject to race conditions

Reported by: Mario Domenech Goulart Owned by:
Priority: major Milestone: 6.0.0
Component: core libraries Version: 4.10.x
Keywords: create-temporary-file, create-temporary-directory Cc:
Estimated difficulty: medium

Description (last modified by Mario Domenech Goulart)

Both use the non-atomic strategy of checking if a file system object exists then act, which may lead to race conditions.

create-temporary-directory is specially more fragile because it uses directory-exists? to check if a file system object exists. So, for example, if a regular file with the same name as the attempted one exists, create-temporary-directory will fail.

Change History (4)

comment:1 Changed 10 years ago by Mario Domenech Goulart

Description: modified (diff)

comment:2 Changed 8 years ago by sjamaan

Estimated difficulty: medium

comment:3 Changed 11 months ago by felix winkelmann

Milestone: someday6.0.0

What would be a suitable approach to make this work?

comment:4 Changed 11 months ago by Vasilij Schneidermann

The recommended approach is to remove the check bit and instead handle any error happening during file/directory creation. While it's uglier, it avoids the race condition.

Note: See TracTickets for help on using tickets.