Opened 12 years ago

Closed 12 years ago

#4619 closed Bugs (fixed)

Interprocess failed to find the tmp directory (windows platform) if the tmp directory stored in the registry points to a none-existing directory

Reported by: josephsieh@… Owned by: Ion Gaztañaga
Milestone: To Be Determined Component: interprocess
Version: Boost 1.44.0 Severity: Problem
Keywords: interprocess tmp directory registry Cc:

Description

shmData = new shared_memory_object (

create_only, shmDataName, read_write

);

This problem only happens in the windows platform (XP, VISTA, Windows 7, both 32 and 64 bits).

When you try to "new" shared_memory_object, IPC will search system defined tmp directory. IPC tries to search the tmp folder location stored in the system registry first. If the registry does not have the tmp folder location (either being deleted accidentally or intentionally), IPC will continue to search the system environment variable "TMP" and "TEMP" for the tmp directory information.

Now, if the registry "DID" have tmp folder information, but that folder "DOES NOT" exist. Then IPC load the tmp folder location and tries to create the interprocess directory in that "NON-EXISTING" tmp folder, then IPC will terminate and throw an exception instead of continue to execute the fail-safe options -- continue to search the tmp folder information from system environment variable, etc.

It should be considered as a bug.

In summary, when IPC loads the non-existing tmp folder from the registry and tries to create "interprocess" folder in that non-existing tmp folder, IPC should not just throw exception but to continue to execute fail-safe options: continue to search the system environment for "TMP" and "TEMP" as the same behavior of not finding tmp directory info from the registry.

Change History (2)

comment:1 by anonymous, 12 years ago

Keywords: interprocess tmp directory registry added

comment:2 by Ion Gaztañaga, 12 years ago

Resolution: fixed
Status: newclosed

Fixed in Boost 1.47

Note: See TracTickets for help on using tickets.