lstat / getSymbolicLinkStatus and other calls that can block should not be imported unsafe
- Dominant language
- Haskell
- Stars
- 124
- Forks
- 99
- PR merge metrics
- No merged PRs in 30d
Description
There are many `unsafe` imported foreign imports for foreign calls that typically don't block very long, but still block nonetheless. For example `lstat` can take a while under high system load especially on networked storage.
The `unsafe` call now blocks the whole capability until completion (and potentially other capabilities too if they start synchronizing for GC).
I've measured the stall in a real world program using a new tool for performance/stall analysis - this has been discussed in #34 before but I'd like to bring it up again.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the Haskell foreign imports for lstat, getSymbolicLinkStatus, and the other potentially blocking calls, then inspect how they are currently marked unsafe. Review the earlier discussion in #34 and use the mentioned performance or stall analysis approach; done means these calls no longer stall the whole capability while they complete.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100