haskell / haskell/unix

lstat / getSymbolicLinkStatus and other calls that can block should not be imported unsafe

Open
#369 1 comment 0 reactions 0 assignees View on GitHub
status: needs triage type: bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.