Open Bug 1536109 Opened 6 years ago Updated 2 years ago

NSPRIOInterposer doesn't interpose nsLocalFile.exists

Categories

(Core :: Gecko Profiler, enhancement, P2)

enhancement

Tracking

()

People

(Reporter: florian, Unassigned)

References

(Blocks 1 open bug)

Details

On Windows, calling nsLocalFile.exists will show a 'stat' marker in the profile when profiling with the mainthreadio feature.

On Linux/OSX we don't have markers when calling nsLocalFile.exists. We still have 'stat' markers when the some code queries the size of a file.

This is because NSPRIOInterposer interposes FileInfo and FileInfo64, but not 'access' which is used directly by nsLocalFileUnix.

Does this explain all the stats that get reported in bug 1579607 and the last few comments of bug 1543752 , or should there be a separate bug for incomplete reports of stat on Linux?

Flags: needinfo?(florian)
See Also: → 1365388

My understanding is that:

  • On Windows we intercept the I/O syscalls at the operating system level (PoisonIOInterposer).
  • On Unix we instead intercept it within the gecko platform (NSPRIOInterposer), which means that we get I/O markers for main thread I/O done by Gecko code, but not for main thread I/O done by OS functions we are calling (eg. gtk functions). I think this is the reason for not seeing bug 1579607 in profiles.
  • The NSPRIOInterposer support for stat calls is incomplete: it will produce markers when some code is checking the file size or last modified date of a file, but won't produce markers when checking if a file exists. This is what this bug is about.
Flags: needinfo?(florian)
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.