Coder Social home page Coder Social logo

unikraft / catalog Goto Github PK

View Code? Open in Web Editor NEW
29.0 29.0 31.0 2.9 MB

Unikraft Applications & Examples Catalog

C 9.76% Dockerfile 68.17% Python 2.92% HTML 2.76% Lua 5.70% JavaScript 2.84% Ruby 1.06% PHP 3.70% Perl 1.28% C++ 0.27% Rust 1.46% Rebol 0.07%

catalog's Introduction

Unikraft logo

The fast, secure and open-source
Unikernel Development Kit

Unikraft powers the next-generation of cloud native, containerless applications by enabling you to radically customize and build custom OS/kernels; unlocking best-in-class performance, security primitives and efficiency savings.

Homepage · Documentation · Report Bug · Feature Request · Join Our Discord · X.com



Features

  • Instantaneous Cold-boots

    • While Linux-based systems might take tens of seconds to boot, Unikraft will be up in milliseconds.
  • Modular Design 🧩

    • Unikraft boasts a modular design approach, allowing developers to include only necessary components, resulting in leaner and more efficient operating system configurations.
  • Optimized for Performance 🚀

    • Built for performance, Unikraft minimizes overheads and leverages platform-specific optimizations, ensuring applications achieve peak performance levels.
  • Flexible Architecture Support 💻

    • With support for multiple hardware architectures including x86, ARM, (and soon RISC-V), Unikraft offers flexibility in deployment across diverse hardware platforms.
  • Broad Language and Application Support 📚

    • Unikraft offers extensive support for multiple programming languages and hardware architectures, providing developers with the flexibility to choose the tools and platforms that best suit your needs.
  • Cloud and Edge Compatibility ☁️

    • Designed for cloud and edge computing environments, Unikraft enables seamless deployment of applications across distributed computing infrastructures.
  • Reduced Attack Surface 🛡️

    • By selectively including only necessary components, Unikraft reduces the attack surface, enhancing security in deployment scenarios. Unikraft also includes many additional modern security features.
  • Developer Friendly 🛠️

    • Unikraft's intuitive toolchain and user-friendly interface simplify the development process, allowing developers to focus on building innovative solutions.
  • Efficient Resource Utilization 🪶

    • Unikraft optimizes resource utilization, leading to smaller footprints (meaning higher server saturation) and improved efficiency in resource-constrained environments.
  • Community-Driven Development 👥

    • Unikraft is an open-source project driven by a vibrant community of over 100 developers, fostering collaboration and innovation from industry and academia.

Quick Start

Install the companion command-line client kraft:

# Install on macOS, Linux, and Windows:
curl -sSfL https://get.kraftkit.sh | sh

See additional installation instructions.

Run your first ultra-lightweight unikernel virtual machine:

kraft run unikraft.org/helloworld:latest

View its status and manage multiple instances:

kraft ps --all

View the community image catalog in your CLI for more apps:

kraft pkg ls --update --apps

Or browse through one of the many starter example projects.

Why Unikraft?

Unikraft is a radical, yet Linux-compatible with effortless tooling, technology for running applications as highly optimized, lightweight and single-purpose virtual machines (known as unikernels).

In today's computing landscape, efficiency is paramount. Unikraft addresses this need with its modular design, enabling developers to create customized, lightweight operating systems tailored to specific application requirements. By trimming excess overhead and minimizing attack surfaces, Unikraft enhances security and performance in cloud and edge computing environments.

Unikraft's focus on optimization ensures that applications run smoothly, leveraging platform-specific optimizations to maximize efficiency. With support for various hardware architectures and programming languages, Unikraft offers flexibility without compromising performance. In a world where resources are precious, Unikraft provides a pragmatic solution for streamlined, high-performance computing.

Getting Started

There are two ways to get started with Unikraft:

  1. (Recommended) Using the companion command-line tool kraft (covered below).

  2. Using the GNU Make-based system. For this, see our advanced usage guide.

Toolchain Installation

You can install the companion command-line client kraft by using the interactive installer:

# Install on macOS, Linux, and Windows:
curl -sSfL https://get.kraftkit.sh | sh

macOS

brew install unikraft/cli/kraftkit

Debian/Fedora/RHEL/Arch/Windows

Use the interactive installer or see additional installation instructions.

Codespaces

Try out one of the examples in GitHub Codespaces:

Open in GitHub Codespaces

Container Build Environment

You can use the pre-built development container environment which has all dependencies necessary for building and trying out Unikraft in emulation mode.

Attach your working directory on your host as a mount path volume mapped to /workspace, e.g.:

docker run --platform linux/x86_64 -it --rm -v $(pwd):/workspace --entrypoint bash kraftkit.sh/base:latest

The above command will drop you into a container shell. Type exit or Ctrl+D to quit.

Testing your Installation

Running unikernels with kraft is designed to be simple and familiar. To test your installation of kraft, you can run the following:

kraft run unikraft.org/helloworld:latest

Build your first unikernel

Building unikernels is also designed to be straightforward. Build your first unikernel by simply placing a Kraftfile into your repo and pointing it to your existing Dockerfile:

spec: v0.6

runtime: base:latest

rootfs: ./Dockerfile

cmd: ["/path/to/my-server-app"]

Learn more about the syntax of a Kraftfile.

Once done, invoke in the context of your working directory:

kraft run .

Example Projects and Pre-built Images

You can find some common project examples below:

Example
Simple "Hello, world!" application written in C
Simple "Hello, world!" application written in C++
Simple "Hello, world!" application written in Rust built via cargo
Simple NodeJS 18 HTTP Web Server with http
Simple Go 1.21 HTTP Web Server with net/http
Simple Flask 3.0 HTTP Web Server
Simple Python 3.10 HTTP Web Server with http.server.HTTPServer

Find more examples and applications in our community catalog!

Cloud Deployment

The creators of Unikraft have built KraftCloud: a next generation cloud platform powered by technology intended to work in millisecond timescales.

Millisecond Scale-to-Zero Millisecond Autoscale Millisecond Cold Boots
Higher Throughput Much Lower Cloud Bill HW-Level Isolation
On-Prem or Cloud-Prem Works with Docker & K8s Terraform Integration

Contributing

Unikraft is open-source and licensed under BSD-3-Clause and the copyright of its authors. If you would like to contribute:

  1. Read the Developer Certificate of Origin Version 1.1.
  2. Sign-off commits as described in the Developer Certificate of Origin Version 1.1.
  3. Grant copyright as detailed in the license header.

This ensures that users, distributors, and other contributors can rely on all the software related to Unikraft being contributed under the terms of the License. No contributions will be accepted without following this process.

Afterwards, navigate to the contributing guide to get started. See also Unikraft's coding conventions.

Additional resources

License

Unikraft Open-Source Project source code and its affiliated projects source code is licensed under a BSD-3-Clause if not otherwise stated. For more information, please refer to COPYING.md.

Affiliation

Unikraft is a member of the Linux Foundation and is a Xen Project Incubator Project. The Unikraft name, logo and its mascot are trademark of Unikraft GmbH.


LinuxFoundation logo     XenProject logo

catalog's People

Contributors

chaoyihuang avatar craciunoiuc avatar felipehuici avatar gabrielmocanu avatar lucaseri avatar mihnea0firoiu avatar mkroening avatar nderjung avatar razvand avatar skuenzer avatar stefanjum avatar thass0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

catalog's Issues

`mongo:6.0`: Crash when started

MariaDB (PR #45) crashes when started. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b razvand/library/mongo unikraft-upb/razvand/library/mongo
cd library/mongo/6.0
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M 1024M -p 27017:27017 .

The output message is:

{"t":{"$date":"2024-03-06T17:01:07.113+00:00"},"s":"I",  "c":"CONTROL",  "id":21951,   "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"net":{"bindIp":"*"}}}}
write(fd:1, "{"t":{"$date":"2024-03-0"..., 188) = 188
prlimit64(0x0, 0x7, ...) = 0x0
mmap(NULL, 69632, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, fd:-1, 0) = va:0x1001f86000
mprotect(va:0x1001f87000, 65536, PROT_READ|PROT_WRITE) = OK
rt_sigprocmask(0x0, 0x10008f89e0, ...) = 0x0
clone3(0x432e7d5c0, 0x58, ...) = Function not implemented (-38)
clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, va:0x1001f95970, <ref:0x1001f96910>pid:4, <ref:0x1001f96910>pid:4, va:0x1001f96640) = pid:4
rt_sigprocmask(0x2, 0x432e7d720, ...) = 0x0
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x1001f97000
mmap(NULL, 69632, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, fd:-1, 0) = va:0x1002097000
mprotect(va:0x1002098000, 65536, PROT_READ|PROT_WRITE) = OK
rt_sigprocmask(0x0, 0x10008f89e0, ...) = 0x0
clone3(0x432e7d8f0, 0x58, ...) = Function not implemented (-38)
clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, va:0x10020a6970, <ref:0x10020a7910>pid:5, <ref:0x10020a7910>pid:5, va:0x10020a7640) = pid:5
rt_sigprocmask(0x2, 0x432e7da50, ...) = 0x0
gettimeofday(0x432e7db10, 0x0, ...) = 0x0
futex(va:0x1001f85910, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME) = OK
[    2.252165] CRIT: [libukvmem] Cannot handle read page fault at 0x0 (ec: 0x0): -14
[    2.254162] CRIT: [libkvmplat] RIP: 000000100d51d6f9 CS: 0008
[    2.255695] CRIT: [libkvmplat] RSP: 0000001001f5feb0 SS: 0010 EFLAGS: 00010202
[    2.257633] CRIT: [libkvmplat] RAX: 0000000000000000 RBX: 0000001001c8fed0 RCX: 0000000000000000
[    2.259982] CRIT: [libkvmplat] RDX: 0000000000000001 RSI: 000000100eb131d8 RDI: 0000000000000000
[    2.262335] CRIT: [libkvmplat] RBP: 0000001001f5fec0 R08: 0000000000000000 R09: 0000000000000000
[    2.264692] CRIT: [libkvmplat] R10: 0000000000000000 R11: 0000001001f5fc20 R12: 0000001001d92c00
[    2.266957] CRIT: [libkvmplat] R13: 0000001001f60090 R14: 0000001001f61460 R15: 0000001001f600c0
[    2.269288] CRIT: [libkvmplat] base is 0x1001f5fec0 caller is 0x100c15d7e3
[    2.271131] CRIT: [libkvmplat] base is 0x1001f5ff70 caller is 0x100a835385
[    2.272976] CRIT: [libkvmplat] base is 0x1001f61ce0 caller is 0x100d546d45
[    2.274817] CRIT: [libkvmplat] base is 0x1001f61d10 caller is 0x100a60214c
[    2.276654] CRIT: [libkvmplat] base is 0x1001f61f80 caller is 0x100b5d9260
[    2.278490] CRIT: [libkvmplat] base is 0x1001f62850 caller is 0x100b5d9469
[    2.280342] CRIT: [libkvmplat] base is 0x1001f628b0 caller is 0x100d6f7c1f
[    2.282153] CRIT: [libkvmplat] 
[    2.282991] CRIT: [libkvmplat] 1001f5fea0: d0 fe f5 01 10 00 00 00 61 9e 53 0d 10 00 00 00
[    2.285140] CRIT: [libkvmplat] 1001f5feb0: 60 14 f6 01 10 00 00 00 d7 6c 77 0d 10 00 00 00
[    2.287372] CRIT: [libkvmplat] 1001f5fec0: 70 ff f5 01 10 00 00 00 e3 d7 15 0c 10 00 00 00
[    2.289484] CRIT: [libkvmplat] 1001f5fed0: f0 fe f5 01 10 00 00 00 e1 9e 53 0d 10 00 00 00
[    2.291680] CRIT: [libkvmplat] 
[    2.292520] CRIT: [libkvmplat] 1001f5feb0: 60 14 f6 01 10 00 00 00 d7 6c 77 0d 10 00 00 00
[    2.294736] CRIT: [libkvmplat] 1001f5fec0: 70 ff f5 01 10 00 00 00 e3 d7 15 0c 10 00 00 00
[    2.296942] CRIT: [libkvmplat] 1001f5fed0: f0 fe f5 01 10 00 00 00 e1 9e 53 0d 10 00 00 00
[    2.299138] CRIT: [libkvmplat] 1001f5fee0: 90 86 c7 01 10 00 00 00 38 ff f5 01 10 00 00 00
[    2.301364] CRIT: [libkvmplat] 
[    2.302198] CRIT: [libkvmplat] 100d51d6e0: 55 48 89 f0 48 8d 35 ed 5a 5f 01 48 89 e5 53 48
[    2.303878] CRIT: [libkvmplat] 100d51d6f0: 89 fb 48 89 c7 48 83 ec 08 ff 10 48 89 c7 31 c0
[    2.305528] CRIT: [libkvmplat] 100d51d700: 48 85 ff 74 0b 48 8d 73 0c ff d2 b8 01 00 00 00
[    2.307412] CRIT: [libkvmplat] 100d51d710: 48 83 c4 08 5b 5d c3 66 0f 1f 84 00 00 00 00 00
[    2.309631] CRIT: [libkvmplat] Crashing

The output message without logging is:

{"t":{"$date":"2024-03-06T16:55:05.641+00:00"},"s":"I",  "c":"REPL",     "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"TenantMigrationDonorService","namespace":"config.tenantMigrationDonors"}}
{"t":{"$date":"2024-03-06T16:55:05.645+00:00"},"s":"I",  "c":"REPL",     "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"TenantMigrationRecipientService","namespace":"config.tenantMigrationRecipients"}}
{"t":{"$date":"2024-03-06T16:55:05.649+00:00"},"s":"I",  "c":"REPL",     "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"ShardSplitDonorService","namespace":"config.tenantSplitDonors"}}
{"t":{"$date":"2024-03-06T16:55:05.653+00:00"},"s":"I",  "c":"CONTROL",  "id":5945603, "ctx":"main","msg":"Multi threading initialized"}
{"t":{"$date":"2024-03-06T16:55:05.656+00:00"},"s":"I",  "c":"CONTROL",  "id":23377,   "ctx":"SignalHandler","msg":"Received signal","attr":{"signal":0,"error":"Unknown signal 0"}}
{"t":{"$date":"2024-03-06T16:55:05.659+00:00"},"s":"I",  "c":"CONTROL",  "id":23378,   "ctx":"SignalHandler","msg":"Signal was sent by kill(2)","attr":{"pid":0,"uid":0}}
{"t":{"$date":"2024-03-06T16:55:05.662+00:00"},"s":"I",  "c":"CONTROL",  "id":23381,   "ctx":"SignalHandler","msg":"will terminate after current cmd ends"}
{"t":{"$date":"2024-03-06T16:55:05.665+00:00"},"s":"I",  "c":"REPL",     "id":4784900, "ctx":"SignalHandler","msg":"Stepping down the ReplicationCoordinator for shutdown","attr":{"waitTimeMillis":15000}}
{"t":{"$date":"2024-03-06T16:55:05.670+00:00"},"s":"I",  "c":"REPL",     "id":4794602, "ctx":"SignalHandler","msg":"Attempting to enter quiesce mode"}
{"t":{"$date":"2024-03-06T16:55:05.673+00:00"},"s":"I",  "c":"-",        "id":6371601, "ctx":"SignalHandler","msg":"Shutting down the FLE Crud thread pool"}
{"t":{"$date":"2024-03-06T16:55:05.677+00:00"},"s":"I",  "c":"COMMAND",  "id":4784901, "ctx":"SignalHandler","msg":"Shutting down the MirrorMaestro"}
{"t":{"$date":"2024-03-06T16:55:05.681+00:00"},"s":"I",  "c":"SHARDING", "id":4784902, "ctx":"SignalHandler","msg":"Shutting down the WaitForMajorityService"}
{"t":{"$date":"2024-03-06T16:55:05.684+00:00"},"s":"I",  "c":"NETWORK",  "id":4784905, "ctx":"SignalHandler","msg":"Shutting down the global connection pool"}
{"t":{"$date":"2024-03-06T16:55:05.688+00:00"},"s":"I",  "c":"NETWORK",  "id":4784918, "ctx":"SignalHandler","msg":"Shutting down the ReplicaSetMonitor"}
{"t":{"$date":"2024-03-06T16:55:05.691+00:00"},"s":"I",  "c":"SHARDING", "id":4784921, "ctx":"SignalHandler","msg":"Shutting down the MigrationUtilExecutor"}
{"t":{"$date":"2024-03-06T16:55:05.695+00:00"},"s":"I",  "c":"ASIO",     "id":22582,   "ctx":"MigrationUtil-TaskExecutor","msg":"Killing all outstanding egress activity."}
{"t":{"$date":"2024-03-06T16:55:05.699+00:00"},"s":"I",  "c":"CONTROL",  "id":4615611, "ctx":"initandlisten","msg":"MongoDB starting","attr":{"pid":1,"port":27017,"dbPath":"/data/db","architecture":"64-bit","host":"unikraft"}}
{"t":{"$date":"2024-03-06T16:55:05.704+00:00"},"s":"I",  "c":"CONTROL",  "id":23403,   "ctx":"initandlisten","msg":"Build Info","attr":{"buildInfo":{"version":"6.0.13","gitVersion":"3b13907f9bdf6bd3264d67140d6c215d51bbd20c","openSSLVersion":"OpenSSL 3.0.2 15 Mar 2022","modules":[],"allocator":"tcmalloc","environment":{"distmod":"ubuntu2204","distarch":"x86_64","target_arch":"x86_64"}}}}
{"t":{"$date":"2024-03-06T16:55:05.713+00:00"},"s":"I",  "c":"CONTROL",  "id":51765,   "ctx":"initandlisten","msg":"Operating System","attr":{"os":{"name":"Ubuntu","version":"22.04"}}}
{"t":{"$date":"2024-03-06T16:55:05.717+00:00"},"s":"I",  "c":"CONTROL",  "id":21951,   "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"net":{"bindIp":"*"}}}}
[    0.822378] CRIT: [libukvmem] Cannot handle read page fault at 0x0 (ec: 0x0): -14
[    0.824280] CRIT: [libkvmplat] RIP: 000000100d51d6f9 CS: 0008
[    0.825787] CRIT: [libkvmplat] RSP: 0000001001f5feb0 SS: 0010 EFLAGS: 00010202
[    0.827675] CRIT: [libkvmplat] RAX: 0000000000000000 RBX: 0000001001c8faf0 RCX: 0000000000000000
[    0.829995] CRIT: [libkvmplat] RDX: 0000000000000001 RSI: 000000100eb131d8 RDI: 0000000000000000
[    0.832255] CRIT: [libkvmplat] RBP: 0000001001f5fec0 R08: 0000000000000000 R09: 0000000000000000
[    0.834532] CRIT: [libkvmplat] R10: 0000000000000000 R11: 0000001001f5fc20 R12: 0000001001d92000
[    0.836787] CRIT: [libkvmplat] R13: 0000001001f60090 R14: 0000001001f61460 R15: 0000001001f600c0
[    0.839042] CRIT: [libkvmplat] base is 0x1001f5fec0 caller is 0x100c15d7e3
[    0.840864] CRIT: [libkvmplat] base is 0x1001f5ff70 caller is 0x100a835385
[    0.842626] CRIT: [libkvmplat] base is 0x1001f61ce0 caller is 0x100d546d45
[    0.844455] CRIT: [libkvmplat] base is 0x1001f61d10 caller is 0x100a60214c
[    0.846232] CRIT: [libkvmplat] base is 0x1001f61f80 caller is 0x100b5d9260
[    0.848044] CRIT: [libkvmplat] base is 0x1001f62850 caller is 0x100b5d9469
[    0.849846] CRIT: [libkvmplat] base is 0x1001f628b0 caller is 0x100d6f7c1f
[    0.851639] CRIT: [libkvmplat] 
[    0.852534] CRIT: [libkvmplat] 1001f5fea0: d0 fe f5 01 10 00 00 00 61 9e 53 0d 10 00 00 00
[    0.854823] CRIT: [libkvmplat] 1001f5feb0: 60 14 f6 01 10 00 00 00 d7 6c 77 0d 10 00 00 00
[    0.856902] CRIT: [libkvmplat] 1001f5fec0: 70 ff f5 01 10 00 00 00 e3 d7 15 0c 10 00 00 00
[    0.859004] CRIT: [libkvmplat] 1001f5fed0: f0 fe f5 01 10 00 00 00 e1 9e 53 0d 10 00 00 00
[    0.861103] CRIT: [libkvmplat] 
[    0.861993] CRIT: [libkvmplat] 1001f5feb0: 60 14 f6 01 10 00 00 00 d7 6c 77 0d 10 00 00 00
[    0.864186] CRIT: [libkvmplat] 1001f5fec0: 70 ff f5 01 10 00 00 00 e3 d7 15 0c 10 00 00 00
[    0.866069] CRIT: [libkvmplat] 1001f5fed0: f0 fe f5 01 10 00 00 00 e1 9e 53 0d 10 00 00 00
[    0.867718] CRIT: [libkvmplat] 1001f5fee0: 10 82 c7 01 10 00 00 00 38 ff f5 01 10 00 00 00
[    0.869303] CRIT: [libkvmplat] 
[    0.869904] CRIT: [libkvmplat] 100d51d6e0: 55 48 89 f0 48 8d 35 ed 5a 5f 01 48 89 e5 53 48
[    0.871468] CRIT: [libkvmplat] 100d51d6f0: 89 fb 48 89 c7 48 83 ec 08 ff 10 48 89 c7 31 c0
[    0.873048] CRIT: [libkvmplat] 100d51d700: 48 85 ff 74 0b 48 8d 73 0c ff d2 b8 01 00 00 00
[    0.874625] CRIT: [libkvmplat] 100d51d710: 48 83 c4 08 5b 5d c3 66 0f 1f 84 00 00 00 00 00
[    0.876190] CRIT: [libkvmplat] Crashing
 E  machine fatally exited

`bun/1`: Client connection doesn't work

Bun (PR #79 ) cannot be connected with curl. Use the following commands to replicate:

rm -fr catalog
rm start-buildkit.sh
wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b "$branch" unikraft-upb/"$branch"
cd "$path"
sed -i -e "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" -e '/CONFIG_LIBPOSIX_ENVIRON_ENVP2/a\'$'\n''\    CONFIG_LIBPOSIX_ENVIRON_ENVP2: "RUST_BACKTRACE=full"' Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M "$memory" -p "$port":"$port" .

On another console run:

curl localhost:3000

Nothing happens.

The output message is:

clock_gettime(CLOCK_0x7, <out>timespec:{tv_sec=0, tv_nsec=891933181}) = OK
clock_gettime(CLOCK_0x7, <out>timespec:{tv_sec=0, tv_nsec=893065779}) = OK
clock_gettime(CLOCK_REALTIME, <out>timespec:{tv_sec=1709879161, tv_nsec=794184962}) = OK
openat(AT_FDCWD, "/", O_RDONLY|O_CLOEXEC|O_DIRECTORY) = fd:5
getdents64(0x5, 0x417fff5f0, ...) = 0x9d8
getdents64(0x5, 0x417fff5f0, ...) = 0x0
openat(AT_FDCWD, "/", O_RDONLY|O_CLOEXEC|O_DIRECTORY) = fd:6
close(fd:5) = OK
close(fd:6) = OK
mmap(NULL, 33554432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000, fd:-1, 0) = va:0x100243c000
futex(va:0x100bd94aa4, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
openat(AT_FDCWD, "/dev/urandom", O_RDONLY) = fd:5
futex(va:0x100bd94aac, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
read(fd:5, <out>"Ew\xF4\x17\x91wa\xD8\x10+\x97\x82b\xDAB\xB5\xCE\x0E\xCE\x00\xA5B)\x1B"..., 128) = 128
openat(AT_FDCWD, "/proc/self/cgroup", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
sysinfo(0x417fffb30, 0x1005e74c02, ...) = 0x0
futex(va:0x100bd9a698, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x100bd94958, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x100bd94f18, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x100bd94f00, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
clock_gettime(CLOCK_0x6, <out>timespec:{tv_sec=0, tv_nsec=911707796}) = OK
futex(va:0x100bd97f30, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
rt_sigprocmask(0x1, 0x418000ee0, ...) = 0x0
rt_sigprocmask(0x0, 0x418000e40, ...) = 0x0
getpid() = pid:1
gettid() = pid:1
tgkill(0x1, 0x1, ...) = Function not implemented (-38)
rt_sigprocmask(0x2, 0x418000dc0, ...) = 0x0
rt_sigaction(0x6, 0x418000d90, ...) = 0x0
rt_sigprocmask(0x0, 0x418000e40, ...) = 0x0
getpid() = pid:1
gettid() = pid:1
tgkill(0x1, 0x1, ...) = Function not implemented (-38)
rt_sigprocmask(0x2, 0x418000dc0, ...) = 0x0

The output message without logging is:

en1: Interface is up
Powered by Unikraft Telesto (0.16.2~10bd3ab3)

`examples/node18-prisma-rest-express`: No connection established

The Node Prisma example (PR #56) starts, but no connection can be made. Use the following commands to replicate:

port=3000
memory=512M
branch="razvand/examples/catalog-node-prisma"
runtime="library/node/18"
path="examples/node18-prisma-rest-express"

rm -fr catalog
rm start-buildkit.sh

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh

git clone https://github.com/unikraft/catalog
cd catalog

git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b "$branch" unikraft-upb/"$branch"
pushd "$runtime"
sed -i -e "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
popd

pushd "$path"
kraft rm --all
kraft run --rm --log-type basic --log-level debug --runtime ../../"$runtime"/.unikraft/build/node_qemu-x86_64 -M "$memory" -p "$port":"$port" . &
sleep 5
kraft stop --all
kraft rm --all
qemu-system-x86_64 -append "vfs.fstab=[ \"initrd0:/:extract:::\"] -- /usr/bin/node /usr/src/server.js"  -cpu max -device virtio-net-pci,mac=02:b0:b0:37:b6:01,netdev=hostnet0 -nographic -initrd .unikraft/build/initramfs-x86_64.cpio -kernel 
../../"$runtime"/.unikraft/build/node_qemu-x86_64 -netdev user,id=hostnet0,hostfwd=tcp::3000-:3000 -m 512M
popd

The output message is:

open("/usr/src/libquery_engine-linux-musl-openssl-3.0.x.so.node", O_RDONLY|O_CLOEXEC|0x8000) = fd:19
fcntl(0x13, 0x2, ...) = 0x0
fstat(fd:19, <out>stat:{st_size=15587664, st_mode=0100644, ...}) = OK
read(fd:19, <out>"\x7FELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00>\x00\x01\x00\x00\x00"..., 960) = 960
mmap(NULL, 15597568, PROT_READ, MAP_PRIVATE, fd:19, 0) = va:0x1000a4a000
mmap(va:0x1000af7000, 10760192, PROT_EXEC|PROT_READ, MAP_PRIVATE|MAP_FIXED, fd:19, 708608) = va:0x1000af7000
mmap(va:0x100153a000, 3608576, PROT_READ, MAP_PRIVATE|MAP_FIXED, fd:19, 11468800) = va:0x100153a000
mmap(va:0x10018ab000, 520192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, fd:19, 15073280) = va:0x10018ab000
mmap(va:0x1001929000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1001929000
close(fd:19) = OK
open("/usr/local/lib/libssl.so.3", O_RDONLY|O_CLOEXEC|0x8000) = No such file or directory (-2)
open("/usr/lib/libssl.so.3", O_RDONLY|O_CLOEXEC|0x8000) = No such file or directory (-2)
open("/lib/libssl.so.3", O_RDONLY|O_CLOEXEC|0x8000) = fd:19
fcntl(0x13, 0x2, ...) = 0x0
fstat(fd:19, <out>stat:{st_size=544728, st_mode=0100755, ...}) = OK
read(fd:19, <out>"\x7FELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00>\x00\x01\x00\x00\x00"..., 960) = 960
mmap(NULL, 548864, PROT_READ, MAP_PRIVATE, fd:19, 0) = va:0x100192a000
mmap(va:0x100193b000, 303104, PROT_EXEC|PROT_READ, MAP_PRIVATE|MAP_FIXED, fd:19, 69632) = va:0x100193b000
mmap(va:0x1001985000, 118784, PROT_READ, MAP_PRIVATE|MAP_FIXED, fd:19, 372736) = va:0x1001985000
mmap(va:0x10019a2000, 57344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, fd:19, 487424) = va:0x10019a2000
close(fd:19) = OK
open("/usr/local/lib/libcrypto.so.3", O_RDONLY|O_CLOEXEC|0x8000) = No such file or directory (-2)
open("/usr/lib/libcrypto.so.3", O_RDONLY|O_CLOEXEC|0x8000) = No such file or directory (-2)
open("/lib/libcrypto.so.3", O_RDONLY|O_CLOEXEC|0x8000) = fd:19
fcntl(0x13, 0x2, ...) = 0x0
fstat(fd:19, <out>stat:{st_size=4298000, st_mode=0100755, ...}) = OK
read(fd:19, <out>"\x7FELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00>\x00\x01\x00\x00\x00"..., 960) = 960
mmap(NULL, 4313088, PROT_READ, MAP_PRIVATE, fd:19, 0) = va:0x10019b0000
mmap(va:0x10019f9000, 2777088, PROT_EXEC|PROT_READ, MAP_PRIVATE|MAP_FIXED, fd:19, 299008) = va:0x10019f9000
mmap(va:0x1001c9f000, 847872, PROT_READ, MAP_PRIVATE|MAP_FIXED, fd:19, 3076096) = va:0x1001c9f000
mmap(va:0x1001d6e000, 389120, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, fd:19, 3919872) = va:0x1001d6e000
mmap(va:0x1001dca000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1001dca000
close(fd:19) = OK
mprotect(va:0x10018ab000, 491520, PROT_READ) = OK
mprotect(va:0x10019a2000, 40960, PROT_READ) = OK
mprotect(va:0x1001d6e000, 364544, PROT_READ) = OK
rt_sigprocmask(0x0, 0x1000140878, ...) = 0x0
membarrier(0x8, 0x0, ...) = Function not implemented (-38)
rt_sigprocmask(0x0, 0x1000140878, ...) = 0x0
rt_sigaction(0x22, 0x40037b090, ...) = 0x0
tkill(0xb, 0x22, ...) = 0x0
tkill(0xa, 0x22, ...) = 0x0
tkill(0x9, 0x22, ...) = 0x0
tkill(0x8, 0x22, ...) = 0x0
tkill(0x7, 0x22, ...) = 0x0
tkill(0x6, 0x22, ...) = 0x0
tkill(0x5, 0x22, ...) = 0x0
tkill(0x4, 0x22, ...) = 0x0
tkill(0x3, 0x22, ...) = 0x0
tkill(0x2, 0x22, ...) = 0x0

The output message without logging is:

Powered by Unikraft Telesto (0.16.2~ec1f7fe)               
                                                                                                                       
🚀 Server ready at: http://localhost:3000                                                                              
⭐️ See sample requests: http://pris.ly/e/js/rest-express#3-using-the-rest-api                                                                                                                                                                  
en1: Set IPv4 address 10.0.2.15 mask 255.255.255.0 gw 10.0.2.2 

`redis:7.2`: Connection freezes

Using Redis 7.2 (PR #43) freezes when connecting with redis-cli. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft-upb/catalog
cd catalog
git checkout -b razvand/library/redis origin/razvand/library/redis
cd library/redis/7.2
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --log-type basic --log-level debug -M 256M -p 6379:6379 2>&1 | grep -v '\(gettimeofday\|clock_gettime\|/proc/self/stat\|epoll_wait\)'

Use redis-cli to connect to the server:

redis-cli -h localhost

The output shown will have something like this (there are two consecutive - not working redis-cli connection commands run to generate the two chunks of output):


[...]

accept4(0x6, 0x40047fbc0, ...) = 0x7
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x1, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
epoll_ctl(0x5, 0x1, ...) = 0x0
accept4(0x6, 0x40047fbc0, ...) = Resource temporarily unavailable (-11)
mmap(va:0x1000d34000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d34000
read(fd:7, <out>"*2\x0D\x0A$7\x0D\x0ACOMMAND\x0D\x0A$4\x0D\x0ADOC"..., 16384) = 27
mmap(va:0x1000d39000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d39000
mmap(va:0x1000d3e000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d3e000
mmap(va:0x1000d43000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d43000
mmap(va:0x1000d48000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d48000
mmap(va:0x1000d4d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d4d000
mmap(va:0x1000d52000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d52000
mmap(va:0x1000d57000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d57000
mmap(va:0x1000d5c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d5c000
mmap(va:0x1000d61000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d61000
mmap(va:0x1000d66000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d66000
time(0x0, 0x53434f44, ...) = 0x65b37800
getpeername(0x7, 0x40047f8b0, ...) = 0x0
mmap(va:0x1000d6b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d6b000
madvise(0x1000d6b000, 0x6000, ...) = 0x0
writev(0x7, 0x40047bb30, ...) = 0x12fd0
epoll_ctl(0x5, 0x3, ...) = 0x0
read(fd:7, <out>"", 16384) = 0
epoll_ctl(0x5, 0x2, ...) = 0x0
close(fd:7) = OK

[...]

accept4(0x6, 0x40047fbc0, ...) = 0x7
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x1, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
epoll_ctl(0x5, 0x1, ...) = 0x0
accept4(0x6, 0x40047fbc0, ...) = Resource temporarily unavailable (-11)
read(fd:7, <out>"*2\x0D\x0A$7\x0D\x0ACOMMAND\x0D\x0A$4\x0D\x0ADOC"..., 16384) = 27
writev(0x7, 0x40047bb30, ...) = 0x12fd0
epoll_ctl(0x5, 0x3, ...) = 0x0

[...]

`grafana/10.2`: Error starting instance

Grafana (PR #85) gives out an error when started. Use the following commands to replicate:

port=3000
memory=2048M
branch="razvand/library/grafana"
path="library/grafana/10.2"
rm -fr catalog
rm start-buildkit.sh
wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b "$branch" unikraft-upb/"$branch"
cd "$path"
sed -i -e "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M "$memory" -p "$port":"$port" .

The output message is:

futex(va:0x10181fce48, FUTEX_WAIT|FUTEX_PRIVATE_FLAG, 0x0, timespec:NULL) = OK
rt_sigprocmask(0x2, 0xc003905f98, ...) = 0x0
futex(va:0xc006916148, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x1) = OK
futex(va:0xc006916148, FUTEX_WAIT|FUTEX_PRIVATE_FLAG, 0x0, timespec:NULL) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=555764984}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=557129385}) = OK
futex(va:0x10181fce48, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x1) = OK
nanosleep(0x1006bbe990, 0x0, ...) = 0x0
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=560200439}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=561563987}) = OK
futex(va:0x10181fce48, FUTEX_WAIT|FUTEX_PRIVATE_FLAG, 0x0, timespec:NULL) = OK
rt_sigprocmask(0x2, 0xc003905f98, ...) = 0x0
futex(va:0xc006916148, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x1) = OK
epoll_pwait(0x3, 0x1006bbe398, ...) = 0x0
futex(va:0xc006916148, FUTEX_WAIT|FUTEX_PRIVATE_FLAG, 0x0, timespec:NULL) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=568010807}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=569370366}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=570737329}) = OK
futex(va:0x10181fce48, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x1) = OK
futex(va:0x10181fce48, FUTEX_WAIT|FUTEX_PRIVATE_FLAG, 0x0, timespec:NULL) = OK
futex(va:0xc006916148, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x1) = OK
nanosleep(0x1006bbe990, 0x0, ...) = 0x0
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=576164060}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=577519606}) = OK
futex(va:0xc006916148, FUTEX_WAIT|FUTEX_PRIVATE_FLAG, 0x0, timespec:NULL) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=580172071}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=581532482}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=582898140}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=584261732}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=585620385}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=586987592}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=588341612}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=589689466}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=591056053}) = OK
epoll_ctl(0x3, 0x2, ...) = 0x0
close(fd:8) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=593234015}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=594603378}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=595971287}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=597322176}) = OK
clock_gettime(CLOCK_REALTIME, <out>timespec:{tv_sec=1709938480, tv_nsec=498690794}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=600140691}) = OK
clock_gettime(CLOCK_REALTIME, <out>timespec:{tv_sec=1709938480, tv_nsec=501506544}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=602962851}) = OK
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=104, tv_nsec=604318882}) = OK
close(fd:6) = OK
Error: ✗ *migration.MigrationService run error: migration failed: executing migration: migrate org 1: write silence file for org 1: rename /usr/share/grafana/data/alerting/1/silences.4041c266111bed5e /usr/share/grafana/data/alerting/1/silences: function not implemented
write(fd:1, "\x1B[31mError\x1B[0m: \x1B[31m\xE2\x9C\x97"..., 290) = 290

The output message without logging is:

INFO [03-08|22:39:12] Query Service initialization             logger=query_data
INFO [03-08|22:39:12] Live Push Gateway initialization         logger=live.push_http
en1: Set IPv4 address 10.0.2.15 mask 255.255.255.0 gw 10.0.2.2
INFO [03-08|22:39:14] registering usage stat providers         logger=infra.usagestats.collector usageStatsProvidersLen=2
INFO [03-08|22:39:14] starting to provision alerting           logger=provisioning.alerting
INFO [03-08|22:39:14] finished to provision alerting           logger=provisioning.alerting
INFO [03-08|22:39:14] HTTP Server Listen                       logger=http.server address=0.0.0.0:3000 protocol=http subUrl= socket=
INFO [03-08|22:39:14] Starting                                 logger=ngalert.migration
INFO [03-08|22:39:14] Starting legacy migration                logger=ngalert.migration
INFO [03-08|22:39:14] Migrating alerts for organisation        logger=ngalert.migration orgID=1
INFO [03-08|22:39:14] Alerts found to migrate                  logger=ngalert.migration orgID=1 alerts=0
WARN [03-08|22:39:14] No available receivers                   logger=ngalert.migration orgID=1
ERROR[03-08|22:39:15] Stopped background service               logger=server service=*migration.MigrationService reason="migration failed: executing migration: migrate org 1: write silence file for org 1: rename /usr/share/grafana/data/alerting/1/silences.7e30f4209aacd7b8 /usr/share/grafana/data/alerting/1/silences: function not implemented"
Error: ✗ *migration.MigrationService run error: migration failed: executing migration: migrate org 1: write silence file for org 1: rename /usr/share/grafana/data/alerting/1/silences.7e30f4209aacd7b8 /usr/share/grafana/data/alerting/1/silences: function not implemented

`mariadb:11.4`: Client connection doesn't work

MariaDB (PR #40) cannot be connected with mysql. Use the following commands to replicate:

On another console run the mysql client:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b razvand/library/mariadb unikraft-upb/razvand/library/mariadb
cd library/mariadb/11.2
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M 1024M -p 3306:3306 .

The output message is:

futex(va:0x1003c2b128, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x1003c2b128, FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG|FUTEX_CLOCK_REALTIME) = OK
futex(va:0x1003c2b140, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x1) = OK
mprotect(va:0x1024021000, 319488, PROT_READ|PROT_WRITE) = OK
pwrite64(0x6, 0x100342a590, ...) = 0x2000
fdatasync(0x6, 0xa, ...) = 0x0
pwrite64(0x4, 0x10018f47c0, ...) = 0x16
fdatasync(0x4, 0xa, ...) = 0x0
newfstatat(0xffffff9c, 0x10018f44f0, ...) = 0x0
rt_sigprocmask(0x0, 0x10018f5f30, ...) = 0x0
madvise(0x10018e5000, 0xb000, ...) = 0x0
futex(va:0x10018f5910, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME) = OK
pwrite64(0x4, 0x429b7ce00, ...) = 0x16
fdatasync(0x4, 0xa, ...) = 0x0
pwrite64(0x6, 0x100352a877, ...) = 0x1e21
fdatasync(0x6, 0xa, ...) = 0x0
close(fd:6) = OK
close(fd:5) = OK
munmap(va:0x1001864000) = OK
munmap(va:0x100167e000) = OK
munmap(va:0x100bcc9000) = OK
munmap(va:0x10010bd000) = OK
fcntl(0x4, 0x7, ...) = 0x0
close(fd:4) = OK
munmap(va:0x1003cc8000) = OK
munmap(va:0x100a56f000) = OK
futex(va:0x1003cb8188, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x1) = OK
futex(va:0x1003cb8188, FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG|FUTEX_CLOCK_REALTIME) = OK
futex(va:0x1003cb81a0, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x1) = OK
rt_sigprocmask(0x0, 0x10010bcf30, ...) = 0x0
madvise(0x10010ac000, 0xb000, ...) = 0x0
futex(va:0x10010bc910, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME) = OK
futex(va:0x100074cba4, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x100074c778, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x100074ca00, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x100074cba0, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x100074cb9c, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x100074c748, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
futex(va:0x100074cb98, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
clock_gettime(CLOCK_REALTIME, <out>timespec:{tv_sec=1709739106, tv_nsec=433225660}) = OK
futex(va:0x100074c4d0, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
en1: Set IPv4 address 10.0.2.15 mask 255.255.255.0 gw 10.0.2.2

The output message without logging is:

en1: Interface is up
Powered by Unikraft Telesto (0.16.2~dc729a07)
[    0.492453] ERR:  [libposix_process] Ignore updating resource 7: cur = 32183, max = 32183
2024-03-06 14:46:17 0 [Warning] Could not increase number of max_open_files to more than 1024 (request: 32183)
2024-03-06 14:46:17 0 [Warning] Changed limits: max_open_files: 1024  max_connections: 151 (was 151)  table_cache: 421 (was 2000)
2024-03-06 14:46:17 0 [Note] Starting MariaDB 11.2.2-MariaDB-1:11.2.2+maria~ubu2204-log source revision 929532a9426d085111c24c63de9c23cc54382259 as process 1
2024-03-06 14:46:17 0 [Warning] No argument was provided to --log-bin and neither --log-basename or --log-bin-index where used;  This may cause repliction to break when this server acts as a master and has its hostname changed! Please use
'--log-basename=unikraft' or '--log-bin=unikraft-bin' to avoid this problem.
2024-03-06 14:46:17 0 [Warning] WSREP: Failed to guess base node address. Set it explicitly via wsrep_node_address.
2024-03-06 14:46:17 0 [Warning] WSREP: Failed to guess base node address. Set it explicitly via wsrep_node_address.
2024-03-06 14:46:17 0 [Warning] WSREP: Guessing address for incoming client connections failed. Try setting wsrep_node_incoming_address explicitly.
2024-03-06 14:46:17 0 [Note] WSREP: Node addr:
2024-03-06 14:46:17 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2024-03-06 14:46:17 0 [Note] InnoDB: Number of transaction pools: 1
2024-03-06 14:46:17 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-03-06 14:46:17 0 [Warning] mariadbd: io_uring_queue_init() failed with ENOSYS: check seccomp filters, and the kernel version (newer than 5.1 required)
2024-03-06 14:46:17 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
2024-03-06 14:46:17 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
2024-03-06 14:46:17 0 [Note] InnoDB: Completed initialization of buffer pool
2024-03-06 14:46:17 0 [Note] InnoDB: Buffered log writes (block size=512 bytes)
2024-03-06 14:46:17 0 [Note] InnoDB: End of log at LSN=47629
2024-03-06 14:46:17 0 [Note] InnoDB: Opened 3 undo tablespaces
2024-03-06 14:46:17 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2024-03-06 14:46:17 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2024-03-06 14:46:17 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2024-03-06 14:46:17 0 [Note] InnoDB: log sequence number 47629; transaction id 14
2024-03-06 14:46:17 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-03-06 14:46:17 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-03-06 14:46:17 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2024-03-06 14:46:17 0 [Note] InnoDB: Buffer pool(s) load completed at 240306 14:46:17
2024-03-06 14:46:17 0 [Note] Server socket created on IP: '0.0.0.0'.
2024-03-06 14:46:17 0 [Warning] Failed to create a socket for IPv6 '::': errno: 97.

`dragonfly:1.14`: Unable to run `redis-cli` commands

DragonflyDB (PR #50) is unable to handle redis-cli commands. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b razvand/library/dragonfly unikraft-upb/razvand/library/dragonfly
cd library/dragonfly/1.14
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M 256M -p 3306:3306 .

On another console run the redis-cli client:

$ redis-cli 
127.0.0.1:6379> ping
Error: Server closed the connection
not connected> 

The output message is:

uname(<out>utsname:{sysname="Unikraft", nodename="unikraft", ...}) = OK
openat(AT_FDCWD, "/tmp//dragonfly.unikraft.uid0.log.ERROR.20240306-103011.1.log", O_RDONLY|O_CREAT|O_EXCL|0x1) = fd:10
fcntl(0xa, 0x2, ...) = 0x0
fcntl(0xa, 0x6, ...) = 0x0
fcntl(0xa, 0x3, ...) = 0x8081
fcntl(0xa, 0x4, ...) = 0x0
lseek(0xa, 0x0, ...) = 0x0
unlink(0x3be34310300, 0x6c666e6f67617264, ...) = No such file or directory (-2)
symlink(0x3be343202a6, 0x3be34310300, ...) = 0x0
fstat(fd:10, <out>stat:{st_size=0, st_mode=0100644, ...}) = OK
write(fd:10, "Log file created at: 202"..., 298) = 298
getpid() = pid:1
write(fd:4, "E20240306 10:30:11.86344"..., 120) = 120
getpid() = pid:1
E20240306 10:30:11.863443     2 epoll_socket.cc:296] sock[9] Unexpected error 95/Operation not supported 10.0.2.2:60878
write(fd:2, "E20240306 10:30:11.86344"..., 120) = 120
getpeername(0x9, 0x10040f2d40, ...) = 0x0
gettid() = pid:2
getpid() = pid:1
write(fd:4, "W20240306 10:30:11.89704"..., 161) = 161
getpid() = pid:1
epoll_ctl(0x6, 0x2, ...) = 0x0
close(fd:9) = OK
openat(AT_FDCWD, "/proc/self/status", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
openat(AT_FDCWD, "/proc/self/status", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
accept4(0x7, 0x10040d3440, ...) = 0x9
getsockopt(0x9, 0x1, ...) = Protocol not available (-92)
epoll_ctl(0x6, 0x1, ...) = 0x0
accept4(0x7, 0x10040d3440, ...) = Resource temporarily unavailable (-11)
setsockopt(0x9, 0x6, ...) = 0x0
getpeername(0x9, 0x10040f3450, ...) = 0x0
recvmsg(fd:9, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 0, MSG_EOR|MSG_OOB|0x392622) = OK
sendmsg(0x9, 0x10040f2b20, ...) = Operation not supported (-95)
gettid() = pid:2
getpeername(0x9, 0x10040f2bc0, ...) = 0x0
getpid() = pid:1
write(fd:10, "E20240306 10:30:13.18055"..., 120) = 120
getpid() = pid:1
write(fd:4, "E20240306 10:30:13.18055"..., 120) = 120
getpid() = pid:1
E20240306 10:30:13.180550     2 epoll_socket.cc:296] sock[9] Unexpected error 95/Operation not supported 10.0.2.2:60892
write(fd:2, "E20240306 10:30:13.18055"..., 120) = 120
getpeername(0x9, 0x10040f2d40, ...) = 0x0
gettid() = pid:2
getpid() = pid:1
write(fd:4, "W20240306 10:30:13.19793"..., 161) = 161
getpid() = pid:1
write(fd:3, "I20240306 10:30:07.06442"..., 512) = 512
epoll_ctl(0x6, 0x2, ...) = 0x0
close(fd:9) = OK
openat(AT_FDCWD, "/proc/self/status", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
openat(AT_FDCWD, "/proc/self/status", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)

The output message without logging is:

en1: Interface is up                                                                                                   
Powered by Unikraft Telesto (0.16.2~f6ec140b)                                                                          
* Logs will be written to the first available of the following paths:                                                                                                                                                                          
/tmp/dragonfly.*                                                                                                                                                                                                                               
./dragonfly.*                                                                                                                                                                                                                                  
* For the available flags type dragonfly [--help | --helpfull]                                                         
* Documentation can be found at: https://www.dragonflydb.io/docs                                                                                                                                                                               
[    0.337824] ERR:  [libposix_process] Ignore updating resource 7: cur = 64150, max = 1024                                                                                                                                                    
en1: Set IPv4 address 10.0.2.15 mask 255.255.255.0 gw 10.0.2.2                                                         
E20240306 10:13:48.896750     2 epoll_socket.cc:296] sock[9] Unexpected error 95/Operation not supported 10.0.2.2:36450                                                                                                                        
E20240306 10:13:50.654150     2 epoll_socket.cc:296] sock[9] Unexpected error 95/Operation not supported 10.0.2.2:48168 

`php:8.2`: No network connection established

Starting a simple PHP 8.2 HTTP server (PR #24 ) doesn't provide a running network connection connection. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b razvand/library/php unikraft-upb/razvand/library/php
cd library/php/8.2
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M 512M -p 8080:8080 .

The output message is:

mmap(NULL, 331776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x1004953000
munmap(va:0x10048fa000) = OK
prlimit64(0x0, 0x3, ...) = 0x0
brk(va:0x410200000) = va:0x4101df000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x1004c00000
getpid() = pid:1
openat(AT_FDCWD, "/usr/src/server.php", O_RDONLY) = fd:3
time(0x0, 0x1, ...) = 0x65e62da0
newfstatat(0xffffff9c, 0x404e7c850, ...) = 0x0
newfstatat(0xffffff9c, 0x404e7c850, ...) = 0x0
newfstatat(0xffffff9c, 0x404e7c850, ...) = 0x0
rt_sigaction(0x1b, 0x0, ...) = 0x0
rt_sigaction(0x1b, 0x404e7e590, ...) = 0x0
rt_sigaction(0x1, 0x0, ...) = 0x0
rt_sigaction(0x1, 0x404e7e590, ...) = 0x0
rt_sigaction(0x2, 0x0, ...) = 0x0
rt_sigaction(0x2, 0x404e7e590, ...) = 0x0
rt_sigaction(0x3, 0x0, ...) = 0x0
rt_sigaction(0x3, 0x404e7e590, ...) = 0x0
rt_sigaction(0xf, 0x0, ...) = 0x0
rt_sigaction(0xf, 0x404e7e590, ...) = 0x0
rt_sigaction(0xa, 0x0, ...) = 0x0
rt_sigaction(0xa, 0x404e7e590, ...) = 0x0
rt_sigaction(0xc, 0x0, ...) = 0x0
rt_sigaction(0xc, 0x404e7e590, ...) = 0x0
rt_sigaction(0x1b, 0x404e7e430, ...) = 0x0
rt_sigprocmask(0x1, 0x404e7e580, ...) = 0x0
gettimeofday(0x404e7e820, 0x0, ...) = 0x0
newfstatat(0x0, 0x1000cb8dd5, ...) = 0x0
newfstatat(0x0, 0x1000cb8dd5, ...) = 0x0
newfstatat(0x1, 0x1000cb8dd5, ...) = 0x0
newfstatat(0x1, 0x1000cb8dd5, ...) = 0x0
newfstatat(0x2, 0x1000cb8dd5, ...) = 0x0
newfstatat(0x2, 0x1000cb8dd5, ...) = 0x0
time(0x0, 0x1, ...) = 0x65e62da0
ioctl(0x3, 0x5401, ...) = Inappropriate ioctl for device (-25)
newfstatat(0x3, 0x1000cb8dd5, ...) = 0x0
newfstatat(0x3, 0x1000cb8dd5, ...) = 0x0
read(fd:3, <out>"#!/usr/local/bin/php -q\x0A"..., 1024) = 1024
read(fd:3, <out>"\x0A        "Content-Length"..., 512) = 232
socket(AF_INET, SOCK_STREAM, 6) = fd:4
bind(fd:4, va:0x404e7c3e0, 16) = OK
listen(0x4, 0x5, ...) = 0x0

The output message without logging is:

en1: Interface is up
Powered by Unikraft Telesto (0.16.2~fef49861)

`surreal:1.1`: Rust error when starting application

Starting SurrealDB 1.1 (PR #47 ) results in a Rust error. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft-upb/catalog
cd catalog
git checkout -b razvand/library/surreal origin/razvand/library/surreal
cd library/surreal/1.1
sed -i -e "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" -e '/CONFIG_LIBPOSIX_ENVIRON_ENVP2/a\'$'\n''\    CONFIG_LIBPOSIX_ENVIRON_ENVP2: "RUST_BACKTRACE=full"' Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --log-type basic --log-level debug -M 256M -p 8000:8000

This results in an error:

openat(AT_FDCWD, "/proc/self/maps", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
thread 'write(fd:2, "thread '", 8) = 8  
mainwrite(fd:2, "main", 4) = 4                             
' panicked at write(fd:2, "' panicked at ", 14) = 14                                                                   
/root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rswrite(fd:2, "/root/.cargo/registry/sr"..., 84) = 84
:write(fd:2, ":", 1) = 1                                                                                               
416write(fd:2, "416", 3) = 3            
:write(fd:2, ":", 1) = 1                                                                                               
13write(fd:2, "13", 2) = 2  
:                                           
write(fd:2, ":\x0A", 2) = 2                                
assertion `left == right` failed        
  left: 2                                                  
 right: 0write(fd:2, "assertion `left == right"..., 52) = 52  
                                                           
write(fd:2, "\x0A", 1) = 1                                                                                             
getcwd(0x356d014f600, 0x200, ...) = 0x2 
[...]

Without system calls, the error is:

2024-01-27T21:21:58.174848Z  INFO surreal::env: Running 1.1.1+20240116.b261047 for linux on x86_64
2024-01-27T21:21:58.176827Z  WARN surreal::dbs: ❌🔒 IMPORTANT: Authentication is disabled. This is not recommended for production use. 🔒❌
2024-01-27T21:21:58.179499Z  INFO surrealdb::kvs::ds: Starting kvs store in memory
2024-01-27T21:21:58.181290Z  INFO surrealdb::kvs::ds: Started kvs store in memory
2024-01-27T21:21:58.183067Z  INFO surrealdb::kvs::ds: Credentials were provided, and no root users were found. The root user 'root' will be created
thread 'main' panicked at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:416:13:
assertion `left == right` failed
  left: 2
 right: 0
stack backtrace:
   0:       0x1002e3d35c - <unknown>
   1:       0x1002a6bff0 - <unknown>
   2:       0x1002e031a2 - <unknown>
   3:       0x1002e3f18e - <unknown>
   4:       0x1002e3e900 - <unknown>
   5:       0x1002e3fac2 - <unknown>
   6:       0x1002e3f4ec - <unknown>
   7:       0x1002e3f446 - <unknown>
   8:       0x1002e3f431 - <unknown>
   9:       0x1002380ee4 - <unknown>
  10:       0x10023811cb - <unknown>
  11:       0x10023a12e7 - <unknown>

Rust example fails to build with error: `no targets selected to build`

Following the instructions from the Rust example (https://github.com/unikraft/catalog/tree/main/examples/helloworld-rs) fails.

KRAFTKIT_TARGET=helloworld KRAFTKIT_PLAT=qemu KRAFTKIT_ARCH=x86_64 cargo +nightly build -Z build-std=std,panic_abort --target x86_64-unikraft-linux-musl
   Compiling hello v0.0.0 (/home/.../Projects/.../examples/http-rust1.75-actix-web4)
error: linking with `kraftld` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/home/.../.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-
  ...
  ... lots of paths
  ...
  deps/hello-7873fb7c8a103ff6" "-Wl,--gc-sections" "-no-pie" "-nodefaultlibs"
  = note: level=debug msg="kraftkit 0.7.5"
          level=error msg="no targets selected to build"
          

error: could not compile `hello` (bin "hello") due to 1 previous error

`dragonfly:1.14`: Check failed when starting application

Starting DragonflyDB 1.14 (PR #50) results in an application error. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft-upb/catalog
cd catalog
git checkout -b razvand/library/dragonfly origin/razvand/library/dragonfly
cd library/dragonfly/1.14
sed -i -e "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --log-type basic --log-level debug -M 2G -p 6379:6379

This results in an error:

write(fd:4, "F20240128 07:04:09.44150"..., 86) = 86
gettimeofday(0x40087e9b0, 0x0, ...) = 0x0
getpid() = pid:1
gettimeofday(0x40087e9b0, 0x0, ...) = 0x0
F20240128 07:04:09.441506     1 proc_util.cc:45] Check failed: res == 3 || res == 4 1
write(fd:2, "F20240128 07:04:09.44150"..., 86) = 86
getpid() = pid:1
write(fd:3, "I20240128 07:04:09.38595"..., 389) = 389
gettimeofday(0x40087e9b0, 0x0, ...) = 0x0
getpid() = pid:1
gettimeofday(0x40087e9b0, 0x0, ...) = 0x0
getpid() = pid:1
gettimeofday(0x40087e9b0, 0x0, ...) = 0x0
getpid() = pid:1
gettimeofday(0x40087e9b0, 0x0, ...) = 0x0
*** Check failure stack trace: ***
write(fd:2, "*** Check failure stack "..., 35) = 35

Without system calls, the error is:

F20240128 07:32:30.079780     1 proc_util.cc:45] Check failed: res == 3 || res == 4 1
*** Check failure stack trace: ***
    @       0x10024e09f3  (unknown)
    @       0x10024d91b7  (unknown)
    @       0x10024dab3f  (unknown)
    @       0x1001b4b837  (unknown)
    @       0x1001af7551  (unknown)
    @       0x10001fb083  (unknown)
    @       0x1001b1b46e  (unknown)
    @              (nil)  (unknown)

`java:17`: Crash when started

Java (PR #52 ) crashes when started. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b razvand/library/java unikraft-upb/razvand/library/java
cd library/java/17
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M 1024M -p 8080:8080 .

The output message is:

clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=1, tv_nsec=519540909}) = OK
newfstatat(0xffffff9c, 0x10040140b0, ...) = 0x0
readlink("/usr", <out>buf:0x10019cc540, 1023) = Invalid argument (-22)
readlink("/usr/lib", <out>buf:0x10019cc540, 1023) = Invalid argument (-22)
readlink("/usr/lib/jvm", <out>buf:0x10019cc540, 1023) = Invalid argument (-22)
readlink("/usr/lib/jvm/java-17-openjdk-amd64", <out>buf:0x10019cc540, 1023) = Invalid argument (-22)
readlink("/usr/lib/jvm/java-17-openjdk-amd64/lib", <out>buf:0x10019cc540, 1023) = Invalid argument (-22)
readlink("/usr/lib/jvm/java-17-openjdk-amd64/lib/modules", <out>buf:0x10019cc540, 1023) = Invalid argument (-22)
sched_getaffinity(0x0, 0x80, ...) = 0x80
clock_gettime(CLOCK_MONOTONIC, <out>timespec:{tv_sec=1, tv_nsec=531231444}) = OK
mmap(NULL, 251658240, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000, fd:-1, 0) = va:0x100fa6c000
mmap(va:0x1016fa4000, 2555904, PROT_EXEC|PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1016fa4000
mmap(NULL, 49152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000, fd:-1, 0) = va:0x1001a05000
mmap(va:0x1001a05000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1001a05000
mmap(va:0x100fa6c000, 2555904, PROT_EXEC|PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x100fa6c000
mmap(NULL, 962560, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000, fd:-1, 0) = va:0x1001a11000
mmap(va:0x1001a11000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1001a11000
mprotect(va:0x1004024000, 4096, PROT_READ|PROT_WRITE) = OK
mmap(va:0x1017533000, 2555904, PROT_EXEC|PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1017533000
mmap(NULL, 962560, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000, fd:-1, 0) = va:0x1001afc000
mmap(va:0x1001afc000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1001afc000
[    1.551647] CRIT: [libukvmem] Cannot handle read page fault at 0x0 (ec: 0x0): -14
[    1.553021] CRIT: [libkvmplat] RIP: 0000001016fa462d CS: 0008
[    1.554076] CRIT: [libkvmplat] RSP: 00000010019ccf88 SS: 0010 EFLAGS: 00210246
[    1.555401] CRIT: [libkvmplat] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00000000cafebabe
[    1.557053] CRIT: [libkvmplat] RDX: 000000002c100800 RSI: 0000000000000000 RDI: 00000010015b17c0
[    1.558669] CRIT: [libkvmplat] RBP: 00000010015b17c0 R08: 00000000ffffffff R09: 000000000000000c
[    1.560289] CRIT: [libkvmplat] R10: 0000001016fa4724 R11: 00000010019cd368 R12: 00000010019cd480
[    1.561904] CRIT: [libkvmplat] R13: 000000100155b580 R14: 0000001001527024 R15: ffffffffffffffff
[    1.563514] CRIT: [libkvmplat] base is 0x10015b17c0 caller is 0x49656e696c65746e
[    1.564884] CRIT: [libkvmplat] base is 0x756e654700000016 Unhandled Trap 13 (general protection), error code=0x0
[    1.566749] CRIT: [libkvmplat] RIP: 000000000010fd77 CS: 0008
[    1.567809] CRIT: [libkvmplat] RSP: 000000001093bfc0 SS: 0010 EFLAGS: 00210002
[    1.569144] CRIT: [libkvmplat] RAX: 0000000000000000 RBX: 756e654700000016 RCX: 00000000000003fd
[    1.570756] CRIT: [libkvmplat] RDX: 00000000000003f8 RSI: 0000000000000000 RDI: 0000000010905cb3
[    1.572377] CRIT: [libkvmplat] RBP: 000000001093bfd0 R08: 0000000000000020 R09: 00000000000003f8
[    1.573994] CRIT: [libkvmplat] R10: 000000001093bd3b R11: 000000000000000d R12: 0000000000000005
[    1.575618] CRIT: [libkvmplat] R13: 000000001093c030 R14: 0000001001527024 R15: ffffffffffffffff
[    1.577231] CRIT: [libkvmplat] Crashing

The output message without logging is

[    0.709530] ERR:  [libposix_process] Ignore updating resource 7: cur = 1024, max = 1024
[    0.712424] CRIT: [libukvmem] Cannot handle read page fault at 0x0 (ec: 0x0): -14
[    0.713910] CRIT: [libkvmplat] RIP: 0000001016fa462d CS: 0008
[    0.715039] CRIT: [libkvmplat] RSP: 00000010019ccf88 SS: 0010 EFLAGS: 00210246
[    0.716430] CRIT: [libkvmplat] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00000000cafebabe
[    0.718109] CRIT: [libkvmplat] RDX: 000000002c100800 RSI: 0000000000000000 RDI: 00000010015b17c0
[    0.719813] CRIT: [libkvmplat] RBP: 00000010015b17c0 R08: 00000000ffffffff R09: 000000000000000c
[    0.721498] CRIT: [libkvmplat] R10: 0000001016fa4724 R11: 00000010019cd368 R12: 00000010019cd480
[    0.723200] CRIT: [libkvmplat] R13: 000000100155b580 R14: 0000001001527024 R15: ffffffffffffffff
[    0.724890] CRIT: [libkvmplat] base is 0x10015b17c0 caller is 0x49656e696c65746e
[    0.726325] CRIT: [libkvmplat] base is 0x756e654700000016 Unhandled Trap 13 (general protection), error code=0x0
[    0.728254] CRIT: [libkvmplat] RIP: 000000000010fd77 CS: 0008
[    0.729348] CRIT: [libkvmplat] RSP: 0000000010932fc0 SS: 0010 EFLAGS: 00210002
[    0.730727] CRIT: [libkvmplat] RAX: 0000000000000000 RBX: 756e654700000016 RCX: 00000000000003fd
[    0.732391] CRIT: [libkvmplat] RDX: 00000000000003f8 RSI: 0000000000000000 RDI: 00000000108fc7f3
[    0.734049] CRIT: [libkvmplat] RBP: 0000000010932fd0 R08: 0000000000000020 R09: 00000000000003f8
[    0.735732] CRIT: [libkvmplat] R10: 0000000010932d3b R11: 000000000000000d R12: 0000000000000005
[    0.737396] CRIT: [libkvmplat] R13: 0000000010933030 R14: 0000001001527024 R15: ffffffffffffffff
[    0.739068] CRIT: [libkvmplat] Crashing

`mongo:6.0`: Error: `Unhandled Trap 6 (invalid opcode), error code=0x0`

Starting Mongo 6.0.13 (PR #45) results in a crash. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft-upb/catalog
cd catalog
git checkout -b razvand/library/mongo origin/razvand/library/mongo
cd library/mongo/6.0
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --log-type basic --log-level debug -M 1024M -p 27017:27017

This results in an error:

mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x100134b000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x100134d000
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x100134f000
arch_prctl(0x1002, 0x100134ef00, ...) = 0x0
set_tid_address(0x100134f1d0, 0x100134ef00, ...) = 0x1
set_robust_list(0x100134f1e0, 0x18, ...) = Function not implemented (-38)
rseq(0x100134f8a0, 0x20, ...) = Function not implemented (-38)
mprotect(va:0x100093c000, 16384, PROT_READ) = OK
mprotect(va:0x1001349000, 4096, PROT_READ) = OK
mprotect(va:0x100133c000, 4096, PROT_READ) = OK
mprotect(va:0x1001335000, 4096, PROT_READ) = OK
mprotect(va:0x100130b000, 40960, PROT_READ) = OK
mprotect(va:0x10011e0000, 4096, PROT_READ) = OK
mprotect(va:0x10011bd000, 4096, PROT_READ) = OK
mprotect(va:0x10011a2000, 4096, PROT_READ) = OK
mprotect(va:0x100003f000, 4096, PROT_READ) = OK
mprotect(va:0x1001193000, 4096, PROT_READ) = OK
mprotect(va:0x1000134000, 4096, PROT_READ) = OK
mprotect(va:0x1001158000, 53248, PROT_READ) = OK
mprotect(va:0x100109a000, 4096, PROT_READ) = OK
mprotect(va:0x1001017000, 8192, PROT_READ) = OK
mprotect(va:0x1000fd2000, 4096, PROT_READ) = OK
mprotect(va:0x1000d9c000, 16384, PROT_READ) = OK
mprotect(va:0x1000998000, 4096, PROT_READ) = OK
mprotect(va:0x1000f78000, 65536, PROT_READ) = OK
mprotect(va:0x1000bf5000, 4096, PROT_READ) = OK
mprotect(va:0x1000bd9000, 4096, PROT_READ) = OK
mprotect(va:0x1000bcb000, 4096, PROT_READ) = OK
mprotect(va:0x1000afc000, 4096, PROT_READ) = OK
mprotect(va:0x1000ae8000, 8192, PROT_READ) = OK
mprotect(va:0x1000a8a000, 8192, PROT_READ) = OK
mprotect(va:0x1000a38000, 4096, PROT_READ) = OK
mprotect(va:0x100051a000, 372736, PROT_READ) = OK
mprotect(va:0x1000a22000, 8192, PROT_READ) = OK
mprotect(va:0x10009b7000, 4096, PROT_READ) = OK
mprotect(va:0x1000975000, 12288, PROT_READ) = OK
mprotect(va:0x1000724000, 4096, PROT_READ) = OK
mprotect(va:0x1000704000, 4096, PROT_READ) = OK
mprotect(va:0x1000611000, 40960, PROT_READ) = OK
mprotect(va:0x1000031000, 4096, PROT_READ) = OK
mprotect(va:0x100011d000, 16384, PROT_READ) = OK
mprotect(va:0x100e9bf000, 1445888, PROT_READ) = OK
mprotect(va:0x1000079000, 8192, PROT_READ) = OK
prlimit64(0x0, 0x3, ...) = 0x0
[    1.701473] CRIT: [libkvmplat] Unhandled Trap 6 (invalid opcode), error code=0x0
[    1.703387] CRIT: [libkvmplat] RIP: 000000100d6c222a CS: 0008
[    1.704947] CRIT: [libkvmplat] RSP: 0000000432d7f8b0 SS: 0010 EFLAGS: 00010202
[    1.706860] CRIT: [libkvmplat] RAX: 0000000000004000 RBX: 0000000000004008 RCX: 0000000000004000
[    1.709262] CRIT: [libkvmplat] RDX: 0000000000004008 RSI: 000000000000002c RDI: 000000000000002d
[    1.711553] CRIT: [libkvmplat] RBP: 0000000432d7fa80 R08: 000000000000002d R09: 000000000000002c
[    1.713990] CRIT: [libkvmplat] R10: 000000000000002d R11: 0000000000000800 R12: 000000100ef79380
[    1.715765] CRIT: [libkvmplat] R13: 000000000000002c R14: 000000000000002c R15: 000000000000002a
[    1.717529] CRIT: [libkvmplat] Crashing

`haproxy/2.8`: No connection established

HAProxy (PR #87) gives out an error when started. Use the following commands to replicate:

port=8404
memory=256M
branch="razvand/library/haproxy"
path="library/haproxy/2.8"
rm -fr catalog
rm start-buildkit.sh
wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b "$branch" unikraft-upb/"$branch"
cd "$path"
sed -i -e "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M "$memory" -p "$port":"$port" .

Then query the service using:

curl localhost:8404/stats

The output message is:

pipe(0x40087f9c8, 0x40087f970, ...) = 0x0
fcntl(0x5, 0x4, ...) = 0x0
rt_sigprocmask(0x1, 0x40087f910, ...) = 0x0
timer_create(0xfffffff6, 0x40087f8d0, ...) = Operation not supported (-95)
timer_create(0x0, 0x40087f8d0, ...) = Operation not supported (-95)
getpid() = pid:1
[WARNING]  (1) : Failed to setup watchdog timer for thread 0, disabling lockup detection.
write(fd:2, "[WARNING]  (1) : Failed "..., 90) = 90
prctl(0x26, 0x1, ...) = 0x0
[    0.749743] ERR:  [libposix_process] Unsupported resource 6
prlimit64(0x0, 0x6, ...) = Invalid argument (-22)
getpid() = pid:1
[WARNING]  (1) : Failed to disable forks, please report to developers with detailed information about your operating system. You can silence this warning by adding 'insecure-fork-wanted' in the 'global' section.
write(fd:2, "[WARNING]  (1) : Failed "..., 212) = 212
epoll_ctl(0x3, 0x1, ...) = 0x0
epoll_ctl(0x3, 0x1, ...) = 0x0
en1: Set IPv4 address 10.0.2.15 mask 255.255.255.0 gw 10.0.2.2
accept4(0x4, 0x400b5bcb0, ...) = 0x7
setsockopt(0x7, 0x6, ...) = 0x0
accept4(0x4, 0x400b5c030, ...) = Resource temporarily unavailable (-11)
recvfrom(0x7, 0x400b5c110, ...) = 0x53
sendto(fd:7, "HTTP/1.1 200 OK\x0D\x0Acache-c"..., 11761, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = OK
epoll_ctl(0x3, 0x1, ...) = 0x0
recvfrom(0x7, 0x400b5c110, ...) = 0x0
close(fd:7) = OK

The output message without logging is:

en1: Interface is up                              
Powered by Unikraft Telesto (0.16.2~9b72da44)     
[WARNING]  (1) : Failed to setup watchdog timer for thread 0, disabling lockup detection.
[    0.171567] ERR:  [libposix_process] Unsupported resource 6
[WARNING]  (1) : Failed to disable forks, please report to developers with detailed information about your operating system. You can silence this warning by adding 'insecure-fork-wanted' in the 'global' section.
en1: Set IPv4 address 10.0.2.15 mask 255.255.255.0 gw 10.0.2.2

`ruby:3.2`: No network connection established

Starting a simple Ruby3.2 HTTP server (PR #23) doesn't provide a running network connection connection. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b razvand/library/ruby unikraft-upb/razvand/library/ruby
cd library/ruby/3.2
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M 256M -p 8080:8080 .

The output message is:

mmap(NULL, 331776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x1005541000
getrusage(0x0, 0x403e7ecd0, ...) = 0x0
openat(AT_FDCWD, "/etc/gai.conf", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
futex(va:0x1000a3c2e4, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
socket(AF_NETLINK, SOCK_CLOEXEC|SOCK_RAW, 0) = Address family not supported by protocol (-97)
socket(AF_INET6, SOCK_CLOEXEC|SOCK_DGRAM, 0) = Address family not supported by protocol (-97)
socket(AF_INET, SOCK_CLOEXEC|SOCK_DGRAM, 0) = fd:5
connect(0x5, 0x100531dd40, ...) = 0x0
getsockname(0x5, 0x403e7e3a8, ...) = 0x0
close(fd:5) = OK
socket(AF_INET, SOCK_NONBLOCK|SOCK_CLOEXEC|SOCK_STREAM, 6) = fd:5
fcntl(0x5, 0x1, ...) = 0x1
setsockopt(0x5, 0x1, ...) = 0x0
bind(fd:5, va:0x100531dd40, 16) = OK
listen(0x5, 0x1000, ...) = 0x0
accept4(0x5, 0x403e7ebc0, ...) = Resource temporarily unavailable (-11)

The output message without logging is:

<main>: warning: timer_create failed: Operation not supported, signals racy

`helloworld-r`: Rscript execution error: Function not implemented

The helloworld-r example (Pr #101) gives the following output: Rscript execution error: Function not implemented
I tried to debug by uncommenting the # CONFIG_LIBSYSCALL_SHIM_STRACE: 'y' line in the Kraftfile:

brk(NULL) = va:0x415000000
arch_prctl(0x3001, 0x414f7fcb0, ...) = Invalid argument (-22)
uname(<out>utsname:{sysname="Unikraft", nodename="unikraft", ...}) = OK
access("/etc/ld.so.preload", R_OK) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = 0x0
openat(AT_FDCWD, "/usr/lib/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = 0x0
openat(AT_FDCWD, "/lib/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x414f7ee20, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = fd:3
read(fd:3, <out>"\x7FELF\x02\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00>\x00\x01\x00\x00\x00"..., 832) = 832
pread64(fd:3, <out>"\x06\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00"..., 784, 64) = 784
pread64(fd:3, <out>"\x04\x00\x00\x00 \x00\x00\x00\x05\x00\x00\x00GNU\x00\x02\x00\x00\xC0\x04\x00\x00\x00"..., 48, 848) = 48
pread64(fd:3, <out>"\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00GNU\x00\xC2\x89\xDAPq\xA39\x9D"..., 68, 896) = 68
newfstatat(0x3, 0x1000076ee9, ...) = 0x0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x1000000000
pread64(fd:3, <out>"\x06\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00"..., 784, 64) = 784
mmap(NULL, 2264656, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, fd:3, 0) = va:0x1000084000
mprotect(va:0x10000ac000, 2023424, PROT_NONE) = OK
mmap(va:0x10000ac000, 1658880, PROT_EXEC|PROT_READ, MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED, fd:3, 163840) = va:0x10000ac000
mmap(va:0x1000241000, 360448, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED, fd:3, 1822720) = va:0x1000241000
mmap(va:0x100029a000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED, fd:3, 2183168) = va:0x100029a000
mmap(va:0x10002a0000, 52816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x10002a0000
close(fd:3) = OK
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x1000002000
arch_prctl(0x1002, 0x1000001600, ...) = 0x0
set_tid_address(0x10000018d0, 0x1000001600, ...) = 0x1
set_robust_list(0x10000018e0, 0x18, ...) = Function not implemented (-38)
rseq(0x1000001fa0, 0x20, ...) = Function not implemented (-38)
mprotect(va:0x100029a000, 16384, PROT_READ) = OK
mprotect(va:0x100000b000, 4096, PROT_READ) = OK
mprotect(va:0x1000080000, 8192, PROT_READ) = OK
prlimit64(0x0, 0x3, ...) = 0x0
getrandom(0x10002a54d8, 0x8, ...) = 0x8
brk(NULL) = va:0x415000000
brk(va:0x415021000) = va:0x415021000
execve(0x4150002e0, 0x4150002a0, ...) = Function not implemented (-38)
dup(fd:2) = fd:3
fcntl(0x3, 0x3, ...) = 0x8002
newfstatat(0x3, 0x100025c44f, ...) = 0x0
ioctl(0x3, 0x5401, ...) = 0x0
Rscript execution error: Function not implemented
write(fd:3, "Rscript execution error:"..., 50) = 50
close(fd:3) = OK

And this is the output for helloworld-c, as a comparison:

brk(NULL) = va:0x429000000
access("/etc/ld.so.preload", R_OK) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/local/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = 0x0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = No such file or directory (-2)
newfstatat(0xffffff9c, 0x40027eea0, ...) = No such file or directory (-2)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = fd:3
read(fd:3, <out>"\x7FELF\x02\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00>\x00\x01\x00\x00\x00"..., 832) = 832
pread64(fd:3, <out>"\x06\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00"..., 784, 64) = 784
newfstatat(0x3, 0x1000065c84, ...) = 0x0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x1000000000
pread64(fd:3, <out>"\x06\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00"..., 784, 64) = 784
mmap(NULL, 1970000, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, fd:3, 0) = va:0x1000071000
mmap(va:0x1000097000, 1396736, PROT_EXEC|PROT_READ, MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED, fd:3, 155648) = va:0x1000097000
mmap(va:0x10001ec000, 339968, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED, fd:3, 1552384) = va:0x10001ec000
mmap(va:0x100023f000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED, fd:3, 1892352) = va:0x100023f000
mmap(va:0x1000245000, 53072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000245000
close(fd:3) = OK
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, fd:-1, 0) = va:0x1000002000
arch_prctl(0x1002, 0x1000001600, ...) = 0x0
set_tid_address(0x10000018d0, 0x1000001600, ...) = 0x1
set_robust_list(0x10000018e0, 0x18, ...) = Function not implemented (-38)
rseq(0x1000001f20, 0x20, ...) = Function not implemented (-38)
mprotect(va:0x100023f000, 16384, PROT_READ) = OK
mprotect(va:0x1000007000, 4096, PROT_READ) = OK
mprotect(va:0x100006d000, 8192, PROT_READ) = OK
prlimit64(0x0, 0x3, ...) = 0x0
newfstatat(0x1, 0x1000206dd5, ...) = 0x0
ioctl(0x1, 0x5401, ...) = 0x0
getrandom(0x100024a478, 0x8, ...) = 0x8
brk(NULL) = va:0x429000000
brk(va:0x429021000) = va:0x429021000
Hello, World!
write(fd:1, "Hello, World!\x0A", 14) = 14

mariadb: `readlink` error

There is a readlink system call error when running MariaDB (PR #40 ). Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft-upb/catalog
cd catalog
git checkout -b razvand/library/mariadb origin/razvand/library/mariadb
cd library/mariadb/11.2
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
qemu-system-x86_64 -m 1024M -kernel .unikraft/build/mariadb_qemu-x86_64 -append "/usr/sbin/mariadbd --user=root" -nographic -cpu max

The output shown will have something like this:

[...]
getcwd(0x409e77bd0, 0x400, ...) = 0x10      
readlink("//var/lib/mysql/mysql", <out>buf:0x409e77770, 1023) = Invalid argument (-22)                                 
readlink("//var/lib/mysql/mysql/plugin.MAI", <out>buf:0x409e77770, 1023) = Invalid argument (-22)                      
newfstatat(0xffffff9c, 0x409e79bf0, ...) = 0x0
clock_gettime(CLOCK_REALTIME, <out>timespec:{tv_sec=1706028458, tv_nsec=864441836}) = OK                               
2024-01-23 16:47:38 0 [ERROR] Could not open mysql.plugin table: "Can't find file: './mysql/plugin.MAI' (errno: 2 "No such file or directory")". Some plugins may be not loaded
write(fd:2, "2024-01-23 16:47:38 0 [E"..., 176) = 176
[...]

`perl:5.38` No network connection established

Starting a simple Perl 5.38 HTTP server (PR #28) doesn't provide a running network connection connection. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-upb https://github.com/unikraft-upb/catalog
git fetch unikraft-upb
git checkout -b razvand/library/perl unikraft-upb/razvand/library/perl
cd library/perl/5.38
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M 512M -p 8080:8080 .

The output message is:

lseek(0x4, 0x4376, ...) = 0x4376
lseek(0x4, 0x0, ...) = 0x4376
close(fd:4) = OK
getuid(0x69, 0x2, ...) = 0x0
geteuid(0x69, 0x2, ...) = 0x0
getgid(0x69, 0x2, ...) = 0x0
getegid(0x69, 0x2, ...) = 0x0
getuid(0x69, 0x2, ...) = 0x0
geteuid(0x69, 0x2, ...) = 0x0
getgid(0x69, 0x2, ...) = 0x0
getegid(0x69, 0x2, ...) = 0x0
read(fd:3, <out>"", 8192) = 0
close(fd:3) = OK
socket(AF_NETLINK, SOCK_CLOEXEC|SOCK_RAW, 0) = Address family not supported by protocol (-97)
socket(AF_INET, SOCK_CLOEXEC|SOCK_STREAM, 6) = fd:3
fcntl(0x3, 0x1, ...) = 0x1
fcntl(0x3, 0x2, ...) = 0x0
ioctl(0x3, 0x5401, ...) = Inappropriate ioctl for device (-25)
lseek(0x3, 0x0, ...) = Illegal seek (-29)
fcntl(0x3, 0x2, ...) = 0x0
ioctl(0x3, 0x5401, ...) = Inappropriate ioctl for device (-25)
lseek(0x3, 0x0, ...) = Illegal seek (-29)
bind(fd:3, va:0x40562a240, 16) = OK
listen(0x3, 0x5, ...) = 0x0

The output message without logging is:

Powered by Unikraft Telesto (0.16.2~7420a692)

mariadb:10.11: The program is stuck when started

when Introduce mariadb:10.11 as library, it stuck when started, Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft/catalog
cd catalog
git remote add unikraft-xxczxp https://github.com/xxczxp/catalog
git fetch unikraft-xxczxp
git checkout -b xxczxp/library/mariadb unikraft-xxczxp/xxczxp/library/mariadb
cd library/mariadb/10.11
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --rm --log-type basic --log-level debug -M 1024M -p 3306:3306 .

the stuck output message is:

2024-03-25 20:24:02 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
write(fd:2, "2024-03-25 20:24:02 0 [N"..., 95) = 95
openat(AT_FDCWD, "/var/lib/mysql/ib_buffer_pool", O_RDONLY|O_CLOEXEC) = fd:18
newfstatat(0x12, 0x1000c3c44f, ...) = 0x0
read(fd:18, <out>"2,3\x0A1,3\x0A4,3\x0A0,300\x0A0,299\x0A"..., 512) = 512
read(fd:18, <out>"216\x0A0,215\x0A0,214\x0A0,213\x0A0,"..., 512) = 316
read(fd:18, <out>"", 512) = 0
lseek(0x12, 0x0, ...) = 0x0
read(fd:18, <out>"2,3\x0A1,3\x0A4,3\x0A0,300\x0A0,299\x0A"..., 512) = 512
read(fd:18, <out>"216\x0A0,215\x0A0,214\x0A0,213\x0A0,"..., 512) = 316
close(fd:18) = OK
openat(AT_FDCWD, "./mysql/gtid_slave_pos.isl", O_RDONLY|O_CLOEXEC|0x2) = No such file or directory (-2)
openat(AT_FDCWD, "./mysql/gtid_slave_pos.ibd", O_RDONLY|O_CLOEXEC) = fd:18
newfstatat(0x12, 0x1000c3c44f, ...) = 0x0
close(fd:18) = OK
openat(AT_FDCWD, "./mysql/innodb_index_stats.isl", O_RDONLY|O_CLOEXEC|0x2) = No such file or directory (-2)
openat(AT_FDCWD, "./mysql/innodb_index_stats.ibd", O_RDONLY|O_CLOEXEC) = fd:18
newfstatat(0x12, 0x1000c3c44f, ...) = 0x0
close(fd:18) = OK
openat(AT_FDCWD, "./mysql/innodb_table_stats.isl", O_RDONLY|O_CLOEXEC|0x2) = No such file or directory (-2)
openat(AT_FDCWD, "./mysql/innodb_table_stats.ibd", O_RDONLY|O_CLOEXEC) = fd:18
newfstatat(0x12, 0x1000c3c44f, ...) = 0x0
close(fd:18) = OK
pread64(fd:11, <out>"\x00\x00\x00\x00\x00\x00\x00\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x001\xF7"..., 16384, 16384) = 16384
openat(AT_FDCWD, "./mysql/innodb_table_stats.ibd", O_RDONLY|O_CLOEXEC|0x2) = fd:18
fcntl(0x12, 0x4, ...) = 0x0
newfstatat(0x12, 0x1000c3c44f, ...) = 0x0
pread64(fd:18, <out>"\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x96N"..., 16384, 0) = 16384
clock_gettime(CLOCK_REALTIME, <out>timespec:{tv_sec=1711398242, tv_nsec=188796197}) = OK
mmap(NULL, 69632, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, fd:-1, 0) = va:0x101e30d000
mprotect(va:0x101e30e000, 65536, PROT_READ|PROT_WRITE) = OK
rt_sigprocmask(0x0, 0x1000c369e0, ...) = 0x0
clone3(0x10019c4580, 0x58, ...) = Function not implemented (-38)
clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, va:0x101e31cd70, <ref:0x101e31d910>pid:8, <ref:0x101e31d910>pid:8, va:0x101e31d640) = pid:8
rt_sigprocmask(0x2, 0x10019c46e0, ...) = 0x0
clock_gettime(CLOCK_REALTIME, <out>timespec:{tv_sec=1711398242, tv_nsec=215145763}) = OK
openat(AT_FDCWD, "./mysql/innodb_index_stats.ibd", O_RDONLY|O_CLOEXEC|0x2) = fd:19
fcntl(0x13, 0x4, ...) = 0x0
newfstatat(0x13, 0x1000c3c44f, ...) = 0x0
pread64(fd:19, <out>"\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x9D\xD5"..., 16384, 0) = 16384
openat(AT_FDCWD, "./mysql/gtid_slave_pos.ibd", O_RDONLY|O_CLOEXEC|0x2) = fd:20
fcntl(0x14, 0x4, ...) = 0x0
newfstatat(0x14, 0x1000c3c44f, ...) = 0x0
pread64(fd:20, <out>"\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xAD\x95"..., 16384, 0) = 16384
set_robust_list(0x101e225920, 0x18, ...) = Function not implemented (-38)
rt_sigprocmask(0x2, 0x101e225f30, ...) = 0x0
mmap(va:0x1030000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000, fd:-1, 0) = va:0x1030000000
mprotect(va:0x1030000000, 135168, PROT_READ|PROT_WRITE) = OK
set_robust_list(0x101e30c920, 0x18, ...) = Function not implemented (-38)
rt_sigprocmask(0x2, 0x101e30cf30, ...) = 0x0
mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000, fd:-1, 0) = va:0x1034000000
munmap(va:0x1038000000) = OK
mprotect(va:0x1034000000, 135168, PROT_READ|PROT_WRITE) = OK
rt_sigaction(0xa, 0x101e30b880, ...) = 0x0
rt_sigprocmask(0x0, 0x101e30ba60, ...) = 0x0
openat(AT_FDCWD, "/var/lib/mysql/unikraft.pid", O_RDONLY|O_CLOEXEC|O_CREAT|O_TRUNC|0x1) = fd:21
getpid() = pid:1
write(fd:21, "1\x0A", 2) = 2
close(fd:21) = OK
futex(va:0x1003395048, FUTEX_WAKE|FUTEX_PRIVATE_FLAG, 0x7fffffff) = OK
rt_sigprocmask(0x0, 0x101e30bb50, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0
rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0

the it repeat the rt_sigtimedwait(0x101e30bb50, 0x101e30bbd0, ...) = 0x0 endless

The output message without logging is:

kraft rm --all ; kraft run --log-type basic --log-level debug -M 2048M -p 3306:3306
competent_bobo
 D  kraftkit 0.7.14
 D  using platform=qemu
 D  determining how to proceed given provided input and context
 D  using compatible context candidate=kraftfile-unikraft
 D  qemu-system-x86_64 -version
 D  qemu-system-x86_64 -accel help
 D  qemu-system-x86_64 -append /usr/sbin/mariadbd --user=root  -cpu host,+x2apic,-pmu -daemonize -device virtio-net-pci,mac=02:b0:b0:a8:4a:01,netdev=hostnet0 -device pvpanic -device sga -display none -enable-kvm -kernel /home/pneg/Document/catalog/library/mariadb/10.11/.unikraft/build/mongo_qemu-x86_64 -machine pc,accel=kvm -m size=1953M -monitor unix:/home/pneg/.local/share/kraftkit/runtime/6a96d95d-0e80-49b6-8dcb-6dec7aadc088/qemu_mon.sock,server,nowait -name 6a96d95d-0e80-49b6-8dcb-6dec7aadc088 -netdev user,id=hostnet0,hostfwd=tcp::3306-:3306 -nographic -no-reboot -S -parallel none -pidfile /home/pneg/.local/share/kraftkit/runtime/6a96d95d-0e80-49b6-8dcb-6dec7aadc088/machine.pid -qmp unix:/home/pneg/.local/share/kraftkit/runtime/6a96d95d-0e80-49b6-8dcb-6dec7aadc088/qemu_control.sock,server,nowait -qmp unix:/home/pneg/.local/share/kraftkit/runtime/6a96d95d-0e80-49b6-8dcb-6dec7aadc088/qemu_events.sock,server,nowait -rtc base=utc -serial file:/home/pneg/.local/share/kraftkit/runtime/6a96d95d-0e80-49b6-8dcb-6dec7aadc088/machine.log -smp cpus=1,threads=1,sockets=1 -vga none
en1: Interface is up
Powered by Unikraft Telesto (0.16.3~2fbc1f5)
[    0.452476] ERR:  [libposix_process] Ignore updating resource 7: cur = 32183, max = 32183
2024-03-25 20:51:03 0 [Warning] Could not increase number of max_open_files to more than 1024 (request: 32183)
2024-03-25 20:51:03 0 [Warning] Changed limits: max_open_files: 1024  max_connections: 151 (was 151)  table_cache: 421 (was 2000)
2024-03-25 20:51:03 0 [Note] Starting MariaDB 10.11.7-MariaDB-1:10.11.7+maria~ubu2204 source revision 87e13722a95af5d9378d990caf48cb6874439347 as process 1
2024-03-25 20:51:03 0 [Warning] WSREP: Failed to guess base node address. Set it explicitly via wsrep_node_address.
2024-03-25 20:51:03 0 [Warning] WSREP: Failed to guess base node address. Set it explicitly via wsrep_node_address.
2024-03-25 20:51:03 0 [Warning] WSREP: Guessing address for incoming client connections failed. Try setting wsrep_node_incoming_address explicitly.
2024-03-25 20:51:03 0 [Note] WSREP: Node addr: 
2024-03-25 20:51:03 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2024-03-25 20:51:03 0 [Note] InnoDB: Number of transaction pools: 1
2024-03-25 20:51:03 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-03-25 20:51:03 0 [Warning] mariadbd: io_uring_queue_init() failed with ENOSYS: check seccomp filters, and the kernel version (newer than 5.1 required)
2024-03-25 20:51:03 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
2024-03-25 20:51:03 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
2024-03-25 20:51:03 0 [Note] InnoDB: Completed initialization of buffer pool
2024-03-25 20:51:03 0 [Note] InnoDB: Buffered log writes (block size=512 bytes)
2024-03-25 20:51:03 0 [Note] InnoDB: End of log at LSN=46980
2024-03-25 20:51:03 0 [Note] InnoDB: 128 rollback segments are active.
2024-03-25 20:51:03 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2024-03-25 20:51:03 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2024-03-25 20:51:03 0 [Note] InnoDB: log sequence number 46980; transaction id 14
2024-03-25 20:51:03 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-03-25 20:51:03 0 [Note] Server socket created on IP: '0.0.0.0'.
2024-03-25 20:51:03 0 [Warning] Failed to create a socket for IPv6 '::': errno: 97.
2024-03-25 20:51:03 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool

nginx: Error opening `/dev/stdout`

When running Nginx 1.15 (native mode), the following issue appears:

[    6.715998] dbg:  [libvfscore] (int) uk_syscall_r_open((const char*) 0x43fa78e43, (int) 0x441, (mode_t) 0x1a4)
[    6.731505] dbg:  [libdevfs] devfs_lookup:stdout
[    6.742795] dbg:  [libposix_fdio] (ssize_t) uk_syscall_r_write((int) 0x3, (const void *) 0x111a0, (size_t) 0x51)
[    6.757991] dbg:  [libposix_time] (int) uk_syscall_r_clock_gettime((clockid_t) 0x0, (struct timespec*) 0x10f60)
[    6.772617] dbg:  [libposix_fdio] (ssize_t) uk_syscall_r_write((int) 0x2, (const void *) 0x111b2, (size_t) 0x3f)
nginx: [emerg] open() "/dev/stdout" failed (22: Unknown error)
[    6.793821] dbg:  [libposix_fdtab] (int) uk_syscall_r_close((int) 0x4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.