Error creating OCI container

thanks, I can reproduce the problem now..
Anything weird I am doing ? I seem to hit Edge Cases all them Time. It seemed to me like a pretty standard Container Configuration, isn't it ?

What caused you to NOT have the Issue (when you replied me this Morning) ;) ?
 
the issue is that the template contains hardlinks to symlinks, with one of the hardlinked copies being dangling:

Code:
$ ls -lha llvm/usr/lib64/llvm18/lib/
total 114M
drwxrwxr-x 2 fgruenbichler fgruenbichler  180 Jan 12 12:01 .
drwxrwxr-x 3 fgruenbichler fgruenbichler   60 Jan 12 12:01 ..
lrwxrwxrwx 2 fgruenbichler fgruenbichler   15 Jan  1  1970 libLLVM-18.so -> libLLVM.so.18.1
-rwxr-xr-x 2 fgruenbichler fgruenbichler 113M Jan  1  1970 libLLVM.so.18.1
lrwxrwxrwx 2 fgruenbichler fgruenbichler   14 Jan  1  1970 libLTO.so -> libLTO.so.18.1
-rwxr-xr-x 2 fgruenbichler fgruenbichler  73K Jan  1  1970 libLTO.so.18.1
lrwxrwxrwx 2 fgruenbichler fgruenbichler   18 Jan  1  1970 libRemarks.so -> libRemarks.so.18.1
-rwxr-xr-x 2 fgruenbichler fgruenbichler  11K Jan  1  1970 libRemarks.so.18.1
-rwxr-xr-x 2 fgruenbichler fgruenbichler  93K Jan  1  1970 LLVMgold.so
$ ls -lha llvm/sysroot/ostree/repo/objects/37/
total 84K
drwxr-xr-x   2 fgruenbichler fgruenbichler  120 Jan 12 12:01 .
drwxr-xr-x 258 fgruenbichler fgruenbichler 5.1K Jan  1  1970 ..
-rwxr-xr-x   2 fgruenbichler fgruenbichler  73K Jan  1  1970 05d12b3ccf1b5412e17293d8bbaccc4c74c1cf4cfb7e7486f92f665ffcd738.file
-rw-r--r--   1 fgruenbichler fgruenbichler   46 Jan  1  1970 05d12b3ccf1b5412e17293d8bbaccc4c74c1cf4cfb7e7486f92f665ffcd738.file-xattrs-link
lrwxrwxrwx   2 fgruenbichler fgruenbichler   18 Jan  1  1970 fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file -> libRemarks.so.18.1
-rw-r--r--   1 fgruenbichler fgruenbichler   46 Jan  1  1970 fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file-xattrs-link

here you can see that the symlink itself is actually a hardlink:

Code:
$ stat llvm/usr/lib64/llvm18/lib/libRemarks.so
  File: llvm/usr/lib64/llvm18/lib/libRemarks.so -> libRemarks.so.18.1
  Size: 18              Blocks: 0          IO Block: 4096   symbolic link
Device: 0,42    Inode: 4554        Links: 2
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/fgruenbichler)   Gid: ( 1000/fgruenbichler)
Access: 2026-01-12 12:02:03.912881212 +0100
Modify: 1970-01-01 01:00:00.000000000 +0100
Change: 2026-01-12 12:01:45.023400750 +0100
 Birth: 2026-01-12 12:01:45.023303620 +0100

$ stat llvm/sysroot/ostree/repo/objects/37/fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file
  File: llvm/sysroot/ostree/repo/objects/37/fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file -> libRemarks.so.18.1
  Size: 18              Blocks: 0          IO Block: 4096   symbolic link
Device: 0,42    Inode: 4554        Links: 2
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/fgruenbichler)   Gid: ( 1000/fgruenbichler)
Access: 2026-01-12 12:02:03.912881212 +0100
Modify: 1970-01-01 01:00:00.000000000 +0100
Change: 2026-01-12 12:01:45.023400750 +0100
 Birth: 2026-01-12 12:01:45.023303620 +0100

or in the original tar blob:

Code:
lrwxrwxrwx 0/0               0 1970-01-01 01:00 sysroot/ostree/repo/objects/37/fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file -> libRemarks.so.18.1
hrwxrwxrwx 0/0               0 1970-01-01 01:00 usr/lib64/llvm18/lib/libRemarks.so link to sysroot/ostree/repo/objects/37/fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file

I guess we need to figure out whether such dangling symlinks are acceptable when extracting (or, under which constraints they are acceptable)

What caused you to NOT have the Issue (when you replied me this Morning) ;) ?

I tested the container creation with the wrong template :oops:
 
  • Like
Reactions: silverstone
the issue is that the template contains hardlinks to symlinks, with one of the hardlinked copies being dangling:

Code:
$ ls -lha llvm/usr/lib64/llvm18/lib/
total 114M
drwxrwxr-x 2 fgruenbichler fgruenbichler  180 Jan 12 12:01 .
drwxrwxr-x 3 fgruenbichler fgruenbichler   60 Jan 12 12:01 ..
lrwxrwxrwx 2 fgruenbichler fgruenbichler   15 Jan  1  1970 libLLVM-18.so -> libLLVM.so.18.1
-rwxr-xr-x 2 fgruenbichler fgruenbichler 113M Jan  1  1970 libLLVM.so.18.1
lrwxrwxrwx 2 fgruenbichler fgruenbichler   14 Jan  1  1970 libLTO.so -> libLTO.so.18.1
-rwxr-xr-x 2 fgruenbichler fgruenbichler  73K Jan  1  1970 libLTO.so.18.1
lrwxrwxrwx 2 fgruenbichler fgruenbichler   18 Jan  1  1970 libRemarks.so -> libRemarks.so.18.1
-rwxr-xr-x 2 fgruenbichler fgruenbichler  11K Jan  1  1970 libRemarks.so.18.1
-rwxr-xr-x 2 fgruenbichler fgruenbichler  93K Jan  1  1970 LLVMgold.so
$ ls -lha llvm/sysroot/ostree/repo/objects/37/
total 84K
drwxr-xr-x   2 fgruenbichler fgruenbichler  120 Jan 12 12:01 .
drwxr-xr-x 258 fgruenbichler fgruenbichler 5.1K Jan  1  1970 ..
-rwxr-xr-x   2 fgruenbichler fgruenbichler  73K Jan  1  1970 05d12b3ccf1b5412e17293d8bbaccc4c74c1cf4cfb7e7486f92f665ffcd738.file
-rw-r--r--   1 fgruenbichler fgruenbichler   46 Jan  1  1970 05d12b3ccf1b5412e17293d8bbaccc4c74c1cf4cfb7e7486f92f665ffcd738.file-xattrs-link
lrwxrwxrwx   2 fgruenbichler fgruenbichler   18 Jan  1  1970 fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file -> libRemarks.so.18.1
-rw-r--r--   1 fgruenbichler fgruenbichler   46 Jan  1  1970 fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file-xattrs-link

here you can see that the symlink itself is actually a hardlink:

Code:
$ stat llvm/usr/lib64/llvm18/lib/libRemarks.so
  File: llvm/usr/lib64/llvm18/lib/libRemarks.so -> libRemarks.so.18.1
  Size: 18              Blocks: 0          IO Block: 4096   symbolic link
Device: 0,42    Inode: 4554        Links: 2
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/fgruenbichler)   Gid: ( 1000/fgruenbichler)
Access: 2026-01-12 12:02:03.912881212 +0100
Modify: 1970-01-01 01:00:00.000000000 +0100
Change: 2026-01-12 12:01:45.023400750 +0100
 Birth: 2026-01-12 12:01:45.023303620 +0100

$ stat llvm/sysroot/ostree/repo/objects/37/fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file
  File: llvm/sysroot/ostree/repo/objects/37/fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file -> libRemarks.so.18.1
  Size: 18              Blocks: 0          IO Block: 4096   symbolic link
Device: 0,42    Inode: 4554        Links: 2
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/fgruenbichler)   Gid: ( 1000/fgruenbichler)
Access: 2026-01-12 12:02:03.912881212 +0100
Modify: 1970-01-01 01:00:00.000000000 +0100
Change: 2026-01-12 12:01:45.023400750 +0100
 Birth: 2026-01-12 12:01:45.023303620 +0100

or in the original tar blob:

Code:
lrwxrwxrwx 0/0               0 1970-01-01 01:00 sysroot/ostree/repo/objects/37/fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file -> libRemarks.so.18.1
hrwxrwxrwx 0/0               0 1970-01-01 01:00 usr/lib64/llvm18/lib/libRemarks.so link to sysroot/ostree/repo/objects/37/fce149bdced8fd4c4216247f9efd3ee131e86b1fd7a73bbe1ad5fa19f2743e.file

I guess we need to figure out whether such dangling symlinks are acceptable when extracting (or, under which constraints they are acceptable)



I tested the container creation with the wrong template :oops:
Which Template did you use ?

Maybe I tested the only 2 that had an Issue :p .