Added libgcc_s.so.1 to the linux standalone build so pthread_cancel will work

In Makefile, listed additional deps of Build/Standalone. Without that,
it does not get updated for the change to Utility/LinuxMkLibs.hs when
compiling incrementally.

Sponsored-by: Dartmouth College's DANDI project
This commit is contained in:
Joey Hess 2022-12-22 15:15:25 -04:00
parent bda406ff90
commit d475f82c62
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
5 changed files with 35 additions and 4 deletions

View file

@ -11,6 +11,8 @@ git-annex (10.20221213) UNRELEASED; urgency=medium
This is slightly faster and clearer than --include=* or --exclude=*
* Speed up git-annex upgrade (from v5) and init in a repository that has
submodules.
* Added libgcc_s.so.1 to the linux standalone build so pthread_cancel
will work.
-- Joey Hess <id@joeyh.name> Mon, 12 Dec 2022 13:04:54 -0400

View file

@ -146,7 +146,7 @@ clean:
Build/InstallDesktopFile: Build/InstallDesktopFile.hs
$(GHC) --make $@ -Wall -fno-warn-tabs
Build/Standalone: Build/Standalone.hs tmp/configure-stamp
Build/Standalone: Build/Standalone.hs Build/LinuxMkLibs.hs Utility/LinuxMkLibs.hs tmp/configure-stamp
$(GHC) --make $@ -Wall -fno-warn-tabs
Build/BuildVersion: Build/BuildVersion.hs
$(GHC) --make $@ -Wall -fno-warn-tabs

View file

@ -64,12 +64,16 @@ parseLdd = mapMaybe (getlib . dropWhile isSpace) . lines
where
getlib l = headMaybe . words =<< lastMaybe (split " => " l)
{- Get all glibc libs.
{- Get all glibc libs, and also libgcc_s
-
- XXX Debian specific. -}
glibcLibs :: IO [FilePath]
glibcLibs = lines <$> readProcess "sh"
["-c", "dpkg -L libc6:$(dpkg --print-architecture) | egrep '\\.so' | grep -v /gconv/ | grep -v ld.so.conf | grep -v sotruss-lib"]
glibcLibs = do
ls <- lines <$> readProcess "sh"
["-c", "dpkg -L libc6:$(dpkg --print-architecture) | egrep '\\.so' | grep -v /gconv/ | grep -v ld.so.conf | grep -v sotruss-lib"]
ls2 <- lines <$> readProcess "sh"
["-c", "dpkg -L libgcc-s1:$(dpkg --print-architecture) | egrep '\\.so'"]
return (ls++ls2)
{- Get gblibc's gconv libs, which are handled specially.. -}
gconvLibs :: IO [FilePath]

View file

@ -68,3 +68,5 @@ Any ideas Joey?
[[!meta author=yoh]]
[[!tag projects/dandi]]
> [[fixed|done]] --[[Joey]]

View file

@ -0,0 +1,23 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2022-12-22T18:38:32Z"
content="""
I'm a bit surprised git-annex is using `pthread_cancel`, since `strings`
does not show it contains that symbol. Perhaps one of the other pthread
symbols it uses ends up calling that.
It does seem though from the message that it's git-annex and not a program
it runs that is core dumping on this. Also I checked, and the rclone you
installed is a statically linked binary so I would not expect it to use
`libgcc_s.so`. And And git-annex-remote-rclone is a bash script, and bash
doesn't use pthreads.
(I do think that, in general, using the git-annex standalone tarball and
then trying to run additional programs besides git-annex inside it is not
going to always work well. Standalone interposes its own versions of libraries,
which may not work with the other programs. There is already a todo about that,
[[todo/restore_original_environment_when_running_external_special_remotes_from_standalone_git-annex__63__]].)
I've added `libgcc_s.so.1` to the standalone build.
"""]]