redox-os issueshttps://gitlab.redox-os.org/groups/redox-os/-/issues2023-08-02T12:47:40Zhttps://gitlab.redox-os.org/redox-os/relibc/-/issues/181Not all memory is reclaimed when pthreads are destroyed2023-08-02T12:47:40ZJacob Lorentzon4ldo2@protonmail.comNot all memory is reclaimed when pthreads are destroyedMost notably, the stack is not freed in pthread_join or the implicit possibly-later-called pthread_detach destructor. The TCB doesn't appear to be either.
[This branch](https://gitlab.redox-os.org/4lDO2/relibc/-/commits/fix_memleak) fix...Most notably, the stack is not freed in pthread_join or the implicit possibly-later-called pthread_detach destructor. The TCB doesn't appear to be either.
[This branch](https://gitlab.redox-os.org/4lDO2/relibc/-/commits/fix_memleak) fixes part of it, but it seems like there are leaks elsewhere too.https://gitlab.redox-os.org/redox-os/redox/-/issues/1395(Feature request) Recipe categories on the Cookbook configuration2023-11-05T21:30:57ZRibbon(Feature request) Recipe categories on the Cookbook configurationAfter the implementation of the recipe categories we can add a way to build any specified folder inside the Cookbook configuration (`config/your-cpu-arch/your-config.toml`.
We could use the recipe syntax to specify the folder, for examp...After the implementation of the recipe categories we can add a way to build any specified folder inside the Cookbook configuration (`config/your-cpu-arch/your-config.toml`.
We could use the recipe syntax to specify the folder, for example: `folder-name = {}` (if it's technically possible).
The build system will build all recipes inside the specified folder, it's more easy to maintain and less error-prone, as we don't need to insert each new recipe.https://gitlab.redox-os.org/redox-os/redoxfs/-/issues/42Tooling2023-07-18T18:12:01ZRibbonToolingThis issue will cover the necessary tools for RedoxFS.
- [ ] Volume management
- [ ] Partition management
- [ ] Encryption management
- [ ] Compression management
- [ ] Enable/disable volumes
- [ ] Mount/unmount devicesThis issue will cover the necessary tools for RedoxFS.
- [ ] Volume management
- [ ] Partition management
- [ ] Encryption management
- [ ] Compression management
- [ ] Enable/disable volumes
- [ ] Mount/unmount deviceshttps://gitlab.redox-os.org/redox-os/drivers/-/issues/35Reduce code duplication2023-07-18T09:04:46ZJacob Lorentzon4ldo2@protonmail.comReduce code duplicationLots of drivers unnecessarily contain lots of duplicate code, particularly boilerplate code for scheme handling and other process management, and also the MSI/MSI-X code. Additionally, many drivers provide their own wrappers for physmap/...Lots of drivers unnecessarily contain lots of duplicate code, particularly boilerplate code for scheme handling and other process management, and also the MSI/MSI-X code. Additionally, many drivers provide their own wrappers for physmap/physunmap.https://gitlab.redox-os.org/redox-os/redox/-/issues/1394CI testing for packages2023-10-27T13:44:24ZRibbonCI testing for packagesUsing CI tests for packages we can have a stable rolling release system, Void Linux does this, being one of the most stable rolling release Linux distributions of the world.
- [Void Linux continuous integration system](https://build.voi...Using CI tests for packages we can have a stable rolling release system, Void Linux does this, being one of the most stable rolling release Linux distributions of the world.
- [Void Linux continuous integration system](https://build.voidlinux.org/)https://gitlab.redox-os.org/redox-os/kernel/-/issues/132Boot time scales inversely by the number of CPUs2023-07-13T14:25:48ZJacob Lorentzon4ldo2@protonmail.comBoot time scales inversely by the number of CPUsThis can be checked by comparing the boot time (context switch and syscall heavy), when setting QEMU's `-smp` to 1, 4, or 16.
The global context switch lock, combined with every processor being preempted exactly at the same time (the BS...This can be checked by comparing the boot time (context switch and syscall heavy), when setting QEMU's `-smp` to 1, 4, or 16.
The global context switch lock, combined with every processor being preempted exactly at the same time (the BSP sends out IPIs when there are PIT ticks), and that the context is locked numerous times for each syscall, might be the primary causes of this slowdown.https://gitlab.redox-os.org/redox-os/relibc/-/issues/178Rustify2024-01-12T17:50:49ZRibbonRustifyThis issue covers the relibc parts that benefit from using a Rustier implementation, in order to be less prone to memory unsafety and to some extent logic bugs.
- [ ] [Rusty error handling](https://gitlab.redox-os.org/redox-os/relibc/-/...This issue covers the relibc parts that benefit from using a Rustier implementation, in order to be less prone to memory unsafety and to some extent logic bugs.
- [ ] [Rusty error handling](https://gitlab.redox-os.org/redox-os/relibc/-/issues/176)
- [ ] [Rust's libm port](https://gitlab.redox-os.org/redox-os/relibc/-/issues/154)
- [x] dlmallochttps://gitlab.redox-os.org/redox-os/kernel/-/issues/131Support 32-bit userspace when using 64-bit kernels2023-07-08T09:22:45ZJacob Lorentzon4ldo2@protonmail.comSupport 32-bit userspace when using 64-bit kernelshttps://gitlab.redox-os.org/redox-os/kernel/-/issues/130 needs to be fixed, and there probably needs to be two permanent GDT entries, for FS and GS.
It might be possible to allow enabling/disabling compatibility mode, at compile time.https://gitlab.redox-os.org/redox-os/kernel/-/issues/130 needs to be fixed, and there probably needs to be two permanent GDT entries, for FS and GS.
It might be possible to allow enabling/disabling compatibility mode, at compile time.https://gitlab.redox-os.org/redox-os/kernel/-/issues/130x86 segment registers are not saved/restored2023-08-08T09:50:44ZJacob Lorentzon4ldo2@protonmail.comx86 segment registers are not saved/restoredOn x86, segment registers are currently not saved and restored when context switching. Since userspace is capable of loading available selector values into segment registers,
- CS is immutable, everything but GDT_USER_CODE #GPs
- SS (wi...On x86, segment registers are currently not saved and restored when context switching. Since userspace is capable of loading available selector values into segment registers,
- CS is immutable, everything but GDT_USER_CODE #GPs
- SS (will be) immutable, can only be set to GDT_USER_DATA
- DS, ES, FS, and GS, can be either NULL or GDT_USER_DATA,
at most four bits of data can be leaked between contexts when switching.https://gitlab.redox-os.org/redox-os/redox/-/issues/1388(Feature request) Provide VM images for new versions2023-07-08T00:08:15ZRibbon(Feature request) Provide VM images for new versionsWe can offer QEMU and Virtual Box disk images with Redox pre-installed, like FreeBSD does.We can offer QEMU and Virtual Box disk images with Redox pre-installed, like FreeBSD does.https://gitlab.redox-os.org/redox-os/redox/-/issues/1387Feature requests index2024-02-10T18:35:35ZRibbonFeature requests indexThis issue will cover the open feature requests of Redox GitLab, send a comment if you want to see your feature request on the list.
- [ ] [Recipe categories on the Cookbook configuration](https://gitlab.redox-os.org/redox-os/redox/-/is...This issue will cover the open feature requests of Redox GitLab, send a comment if you want to see your feature request on the list.
- [ ] [Recipe categories on the Cookbook configuration](https://gitlab.redox-os.org/redox-os/redox/-/issues/1395) - build system
- [x] [Add an option for make to delete the recipe source](https://gitlab.redox-os.org/redox-os/redox/-/issues/1386) - build system
- [x] [Add an option to ignore recipe errors](https://gitlab.redox-os.org/redox-os/redox/-/issues/1416) - build system
- [x] [Enable the recipe binary syntax by default](https://gitlab.redox-os.org/redox-os/redox/-/issues/1401) - build system
- [x] [Recipe override list](https://gitlab.redox-os.org/redox-os/redox/-/issues/1402) - build system
- [x] [Dark theme by default](https://gitlab.redox-os.org/redox-os/website/-/issues/192) - website
- [ ] [Provide VM images for new versions](https://gitlab.redox-os.org/redox-os/redox/-/issues/1388) - CI server
- [ ] [CI testing for packages](https://gitlab.redox-os.org/redox-os/redox/-/issues/1394) - CI server
- [ ] [memtest86+ for the Redox bootloader](https://gitlab.redox-os.org/redox-os/redox/-/issues/1397) - recipe
- [ ] [Automatic operating system detection on boot loader](https://gitlab.redox-os.org/redox-os/redox/-/issues/1407) - boot loaderhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1384Tracking issues index2024-03-28T11:00:41ZRibbonTracking issues indexThis issue cover the current tracking issues of Redox.
- [ ] [Implement the missing POSIX APIs on relibc](https://gitlab.redox-os.org/redox-os/relibc/-/issues/173) - high priority
- [ ] [Kernel/userspace separation policy](https://gitla...This issue cover the current tracking issues of Redox.
- [ ] [Implement the missing POSIX APIs on relibc](https://gitlab.redox-os.org/redox-os/relibc/-/issues/173) - high priority
- [ ] [Kernel/userspace separation policy](https://gitlab.redox-os.org/redox-os/redox/-/issues/1412) - medium priority
- [ ] [Repositories with missing GitLab CI](https://gitlab.redox-os.org/redox-os/redox/-/issues/1377) - high priority
- [ ] [Self-hosting status](https://gitlab.redox-os.org/redox-os/redox/-/issues/1390) - medium priority
- [ ] [Community hardware device porting](https://gitlab.redox-os.org/redox-os/drivers/-/issues/40) - medium priority
- [ ] [Port the most used crates of the Rust ecossystem](https://gitlab.redox-os.org/redox-os/redox/-/issues/1378) - medium priority
- [ ] [Rustify relibc](https://gitlab.redox-os.org/redox-os/relibc/-/issues/178) - medium priority
- [ ] [Forks status](https://gitlab.redox-os.org/redox-os/redox/-/issues/1380) - low priority
- [ ] [Linux driver VM optimizations](https://gitlab.redox-os.org/redox-os/redox/-/issues/1382) - low priority
- [ ] [Linux app VMs](https://gitlab.redox-os.org/redox-os/redox/-/issues/1383) - low priority
- [ ] [RedoxFS tooling](https://gitlab.redox-os.org/redox-os/redoxfs/-/issues/42) - low priority
- [ ] [Convert all legacy recipes to TOML](https://gitlab.redox-os.org/redox-os/cookbook/-/issues/174) - low priority
- [ ] [Desktop improvements](https://gitlab.redox-os.org/redox-os/redox/-/issues/1391) - low priority
- [ ] [Server improvements](https://gitlab.redox-os.org/redox-os/redox/-/issues/1375) - medium priority
- [ ] [Dev improvements](https://gitlab.redox-os.org/redox-os/redox/-/issues/1392) - medium priority
- [ ] [Exploit mitigations](https://gitlab.redox-os.org/redox-os/redox/-/issues/1393) - low priority
- [ ] [Orbital improvements](https://gitlab.redox-os.org/redox-os/redox/-/issues/1430) - low priority
- [ ] [Feature requests index](https://gitlab.redox-os.org/redox-os/redox/-/issues/1387) - low priorityhttps://gitlab.redox-os.org/redox-os/kernel/-/issues/129Support syscall62023-10-29T20:44:40ZJacob Lorentzon4ldo2@protonmail.comSupport syscall6Redox currently supports syscall0..=syscall5, i.e. rax+rdi+rsi+rdx+r10+r8, but some future syscalls like preadv2/pwritev2 (and futex?) on 32-bit architectures would need e.g. SYS_PWRITEV2+fd+addr+len+off_lo+off_hi+flags, i.e. 7 args.
Th...Redox currently supports syscall0..=syscall5, i.e. rax+rdi+rsi+rdx+r10+r8, but some future syscalls like preadv2/pwritev2 (and futex?) on 32-bit architectures would need e.g. SYS_PWRITEV2+fd+addr+len+off_lo+off_hi+flags, i.e. 7 args.
The registers Linux uses for that, are
- x86_64: rax, rdi, rsi, rdx, r10, r8, r9
- x86_32: eax, ebx, ecx, ecx, edi, esi, ebp
- aarch64: x8, x0, x1, x2, x3, x4, x5, x6
Might be worth looking into whether supporting full-width syscall return values, on x86/x86_64, by setting the carry flag, improves performance (the BSDs do this IIRC).https://gitlab.redox-os.org/redox-os/kernel/-/issues/128Time Protection2023-11-01T14:53:25ZFélix FischerTime ProtectionI've been trying to read this paper for quite a while now, but my understanding of operating systems is not good enough yet. It looked very promising though, specially after the avalanche that were Spectre and Meltdown.
Maybe this conce...I've been trying to read this paper for quite a while now, but my understanding of operating systems is not good enough yet. It looked very promising though, specially after the avalanche that were Spectre and Meltdown.
Maybe this concept could be introduced to Redox, as a complement to Memory Protection? If anyone can do it, it's probably you guys. You have Rust on your side.
http://echronos.systems/publications/csiro_full_text//Ge_YCH_19.pdf
Thank you for your time, and stay safe 🌷https://gitlab.redox-os.org/redox-os/kernel/-/issues/127Proper fmap support2023-08-30T20:10:13ZjD91mZM2Proper fmap supportI'd like input on something. As you might have noticed, the fmap support I added to redoxfs (https://gitlab.redox-os.org/redox-os/redoxfs/merge_requests/35 and https://gitlab.redox-os.org/redox-os/redoxfs/merge_requests/36) is horrible. ...I'd like input on something. As you might have noticed, the fmap support I added to redoxfs (https://gitlab.redox-os.org/redox-os/redoxfs/merge_requests/35 and https://gitlab.redox-os.org/redox-os/redoxfs/merge_requests/36) is horrible. It loads in the entire chunk of the file you ask for, and then write the entire chunk on sync.
Unfortunately I only learned how linux does it after I actually got this implemented. What I optimally should do is this:
- Read PAGE_SIZE bytes of the file
- On page fault because it tries to access bytes that have not been loaded, read another page
- Write to the file on sync like normal.
But of course the pointer that the user has can't ever move. Not sure if this means that nothing can ever be reallocated or if it means that some virtual mapping thing needs to be updated to point to the new location.
Linux solves this by finding a chunk in memory that can fit the entire file. Would this be a reasonable approach? How would this even be done, with a new syscall?
Another issue is that the bytes that aren't yet loaded can't be allocated because that wouldn't generate a page fault, but they also cannot be used by another program.https://gitlab.redox-os.org/redox-os/syscall/-/issues/33Strict pointer provenance2023-06-27T08:50:59ZniluxvStrict pointer provenanceMuch of the current API violates [strict provenance](https://github.com/rust-lang/rust/issues/95228), for example `syscall::call::fmap` returning a `usize` instead of a pointer. Changing this would obviously be a breaking change, but goo...Much of the current API violates [strict provenance](https://github.com/rust-lang/rust/issues/95228), for example `syscall::call::fmap` returning a `usize` instead of a pointer. Changing this would obviously be a breaking change, but good to keep in mind for the next semver-breaking version bump (i.e. `0.4.0`).https://gitlab.redox-os.org/redox-os/redoxer/-/issues/9rsync is required2023-06-19T03:38:47Zthe ssdrsync is requiredCheck if rsync is installedCheck if rsync is installedhttps://gitlab.redox-os.org/redox-os/rmm/-/issues/3Guarantee L1TF immunity2023-06-14T10:14:43ZJacob Lorentzon4ldo2@protonmail.comGuarantee L1TF immunityL1TF is unconditionally handled on Linux by inverting address bits if PRESENT is cleared. On FreeBSD, it is handled by always reserving page zero, and ensuring the address bits are zeroed for non-PRESENT pages.
RMM probably does this al...L1TF is unconditionally handled on Linux by inverting address bits if PRESENT is cleared. On FreeBSD, it is handled by always reserving page zero, and ensuring the address bits are zeroed for non-PRESENT pages.
RMM probably does this already, but that needs to be properly ensured.https://gitlab.redox-os.org/redox-os/rmm/-/issues/2Remove virt_is_valid?2023-06-14T10:11:15ZJacob Lorentzon4ldo2@protonmail.comRemove virt_is_valid?https://gitlab.redox-os.org/redox-os/rmm/-/merge_requests/7#note_27379https://gitlab.redox-os.org/redox-os/rmm/-/merge_requests/7#note_27379https://gitlab.redox-os.org/redox-os/redox/-/issues/1380Forks status2023-07-08T02:30:22ZRibbonForks statusThis issue will track the forks used by Redox, from GitHub to GitLab and the toolchains.
Forks with pending patches to be merged on upstream or waiting relibc improve its portability (they will be merged once the Redox APIs are stable)....This issue will track the forks used by Redox, from GitHub to GitLab and the toolchains.
Forks with pending patches to be merged on upstream or waiting relibc improve its portability (they will be merged once the Redox APIs are stable).
Mark them when it's merged or don't have patches.
- [ ] binutils
- [ ] openssl
- [ ] mesa
- [ ] sdl2
- [ ] atk
- [ ] bash
- [ ] cairo
- [ ] classicube
- [ ] coreutils
- [ ] cpal
- [ ] curl
- [ ] dash
- [ ] diffutils
- [ ] dosbox
- [ ] duktape
- [ ] eduke32
- [ ] extrautils
- [ ] ffmpeg
- [ ] findutils
- [ ] flycast
- [ ] fontconfig
- [ ] freeciv
- [ ] freedoom
- [ ] freepats
- [ ] game-2048
- [ ] gawk
- [ ] gdbserver
- [ ] generaluser-gs
- [ ] gettext
- [ ] gigalomania
- [ ] git
- [ ] glib
- [ ] glium
- [ ] glutin
- [ ] grep
- [ ] make
- [ ] gstreamer
- [ ] hematite
- [ ] iced
- [ ] jansson
- [ ] libc-bench
- [ ] libcosmic
- [ ] libffi
- [ ] libiconv
- [ ] libogg
- [ ] libretro-super
- [ ] libsodium
- [ ] mednafen
- [ ] mgba
- [ ] miniserve
- [ ] netsurf
- [ ] neverball
- [ ] openttd
- [ ] pango
- [ ] patch
- [ ] pathfinder
- [ ] pcre
- [ ] perl
- [ ] pixelcannon
- [ ] pixman
- [ ] prboom
- [ ] python
- [ ] qemu
- [ ] readline
- [ ] retroarch
- [ ] ripgrep
- [ ] rs-nes
- [ ] rust64
- [ ] rustual-boy
- [ ] schismtracker
- [ ] scummvm
- [ ] sdl1.2
- [ ] sdl_gfx
- [ ] sdl_image
- [ ] sdl_mixer
- [ ] sdl_ttf
- [ ] sdl-player
- [ ] sdl2_mixer
- [ ] sed
- [ ] servo
- [ ] sm64ex
- [ ] spacecadetpinball
- [ ] openssh
- [ ] syobonaction
- [ ] timidity
- [ ] uutils
- [ ] vice
- [ ] vim
- [ ] vttest
- [ ] vvvvvv
- [ ] webrender
### Permanent forks
- gcc
- llvm
- rustc
- cargo