Visopsys 0.92 Relased

General discussion about Visopsys.
Post Reply
User avatar
andymc
Posts: 589
Joined: Tue Nov 16, 2010 7:20 pm

Visopsys 0.92 Relased

Post by andymc »

It's been a while! :oops:

Available on the download page.

https://visopsys.org/download/

From the change log (https://visopsys.org/download/change-log/):
Overview: This maintenance release introduces usability and stability improvements to the multitasker, filesystems, text editor, and networking programs, and a number of bug fixes.
  • Added support for 64-bit EXT filesystems (read-only, as before).
  • Implemented a series of steps on the way to changing the kernel’s multitasker to use software task switching, as opposed to using the processor feature. This is a prerequisite for adding x86_64 builds.
    • Implemented a contextSwitch() function.
    • Added a ‘collector’ thread to do the work of cleaning up finished processes, instead of doing it within the scheduler itself.
    • Eliminated the use of x86 IDT task gates, and removed the multitasker’s scheduler process and converted it into an interrupt handler.
  • Updated the ‘edit’ Text Editor program to add ‘New’ and ‘Save As’ menu items, bringing it more in line with conventions used by other editors. When invoked without a filename or creating a ‘New’ document, the ‘Save’ menu item is disabled. Use of a temporary file for unsaved documents has been discontinued.
  • Added a Window library ‘cancel’ dialog for stopping an in-progress operation.
  • Because connecting via TCP can potentially block for a fairly long time, networking programs now use a connection thread that can be killed via the new ‘cancel’ dialog.
  • Added filtering (for instance TCP only, ARP only, etc) for the packet sniffer. By default, all network packets are shown. A new button at the bottom of the left-hand panel will raise a dialog window which allows the user to (de-)select various types of packets to be displayed. As requested by forum user ronaldlees.
  • Added an ‘errno’ program to print error messages associated with error codes.
  • Updated the kernel’s MD5 hashing functions to (correctly) match the usage and behaviour of the more modern SHA1 and SHA256 code.
  • Removed the ‘md5’ program, and replaced it with ‘md5pass’ and ‘md5sum’ programs for hashing strings and files, respectively.
  • Added a lock to the freeEntries list in kernelFile.c.
  • Added locking to directory fileEntry structures when adding to or removing from their lists of entries.
  • Added the standard C library function strndup().
  • Added a global error strings table to the C library, and moved the definitions for strtol() and family from <stdio.h> to <stdlib.h>.
  • Changed the ‘test’ program’s file_ops test to create its temporary directory in /temp, so that it works by default even on a read-only boot disk.
  • Fixed: A SATA driver problem with VmWare’s virtual SATA disks. There was an error in the setting of SATA AHCI DMA modes during initial disk enumeration.
  • Fixed: Problems with Jpeg loading and/or image resizing when creating thumbnails or clicking on multiple images. In a number of cases, thumbnails were created, but the View program would report an error trying to load them.
  • Fixed: When booted from a read-only filesystem (CD), pressing PrtScn could cause a page fault, and error messages on the console saying “Filesystem is read-only” and “Unable to open [file] for writing”.
  • Fixed: When clicking the Text Editor in the Programs window, it would show an error dialog “Error -11 loading file” when booted from a read-only medium/disk, such as a CD/DVD.
  • Fixed: When mounting a new filesystem, it would appear before the other, alphabetically-sorted, items in a directory listing. The most recently mounted filesystem was always being inserted as the first entry in its mount point’s parent directory, because the file name had not yet been set.
  • Fixed: The kernel API was returning incorrect 64-bit values in the high 32 bits. For example, the free bytes values shown by the ‘ls’ command, and the time values shown by the ‘ping’ command, were obviously wrong.
  • Fixed: Attempts to iterate through empty window containers could result in “Can’t allocate zero bytes” errors being logged to the console, for example after switching languages on the first boot screen.
  • Fixed a number of warnings generated when building with the ‘clang’ compiler.
User avatar
ronaldlees
Posts: 120
Joined: Tue May 20, 2014 5:19 pm

Re: Visopsys 0.92 Relased

Post by ronaldlees »

Hi Andy!

It's been a while since I checked in on your project. Wow, it seems you've made quite a few improvements. BTW: thanks for adding that packet filter. I'll have to fire up the new image in my QEMU emulator and see how it goes. How's things in England?
qmastery
Posts: 31
Joined: Mon Nov 19, 2018 8:48 pm

Re: Visopsys 0.92 Relased

Post by qmastery »

andymc wrote: Thu Sep 21, 2023 9:34 pmIt's been a while! :oops:
Indeed :D Btw I tried building Visopsys 0.92 from source today, but after building the toolchains (binutils-2.34.90 and gcc-9.3.0, exactly as recommended at BUILDING.txt) - while running "make" at the toplevel directory, I ran into the following problem:

Code: Select all

Create message object ../../../build/x86/system/locale/tr/./LC_MESSAGES/host.mo
Create message object ../../../build/x86/system/locale/tr/./LC_MESSAGES/lsdev.mo
Create message object ../../../build/x86/system/locale/tr/./LC_MESSAGES/wallpaper.mo
make[3]: Leaving directory '~/visopsys-0.92-src/src/programs/tr'
make[2]: Leaving directory '~/visopsys-0.92-src/src/programs'
make[1]: Leaving directory '~/visopsys-0.92-src/src'
make -C store DEBUG=
make[1]: Entering directory '~/visopsys-0.92-src/store'
cc -Os -pipe -Wall -W -Wshadow -Wcast-align -Wsign-compare -Waggregate-return -Wmissing-format-attribute -Wredundant-decls -Wno-address-of-packed-member -Wno-deprecated -Werror -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -include ../src/include/sys/errors.h -include ../src/include/sys/paths.h -include ../src/include/sys/install.h -include ../src/include/sys/store.h  -DPORTABLE -c ../src/lib/libinstall/libinstall.c -o libinstall.o
ar -rs libinstall.a libinstall.o
ar: creating libinstall.a
cc -Os -pipe -Wall -W -Wshadow -Wcast-align -Wsign-compare -Waggregate-return -Wmissing-format-attribute -Wredundant-decls -Wno-address-of-packed-member -Wno-deprecated -Werror -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -include ../src/include/sys/errors.h -include ../src/include/sys/paths.h -include ../src/include/sys/install.h -include ../src/include/sys/store.h  -DPORTABLE -D_VERSION_=\"0.92\" -L. \
	../src/programs/store.c -linstall -lpthread -o store
../src/programs/store.c: In function ‘handleConnection’:
../src/programs/store.c:658:17: error: pointer ‘request’ may be used after ‘free’ [-Werror=use-after-free]
  658 |                 fprintf(stderr, "%s %d\n", _("Error handling request"),
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  659 |                         request->request);
      |                         ~~~~~~~~~~~~~~~~~
../src/programs/store.c:654:9: note: call to ‘free’ here
  654 |         free(request);
      |         ^~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:47: store] Error 1
make[1]: Leaving directory '~/visopsys-0.92-src/store'
make: *** [Makefile:20: all] Error 2
Probably this " free(request); " should be below the " if (status < 0 )" codeblock :

./visopsys-0.92-src/src/programs/store.c , lines 660-670 :

Code: Select all

	free(request);

	if (status < 0)
	{
		fprintf(stderr, "%s %d\n", _("Error handling request"),
			request->request);
	}
After reordering them " make " command runs fine, although there's a small problem with " make clean " :

Code: Select all

make[1]: Leaving directory '~/visopsys-0.92-src/software'
rm -f *~ core
rm -Rf build
find -name '*.rej' -exec rm {} \;
find -name '*.orig' -exec rm {} \;
find contrib dist docs patches software src store utils work \
	-type f -a ! -name '*.sh' -exec chmod -x {} \; 2> /dev/null
make: [Makefile:38: clean] Error 1 (ignored)
User avatar
andymc
Posts: 589
Joined: Tue Nov 16, 2010 7:20 pm

Re: Visopsys 0.92 Relased

Post by andymc »

Hi qmastery!

Yes, sorry, store.c builds using the local native compiler rather than the toolchain. Mine didn't pick up that double-free for some reason. This is the patch:

Code: Select all

Index: src/programs/store.c
===================================================================
RCS file: /home/andymc/Prog/cvs/visopsys/src/programs/store.c,v
retrieving revision 1.15
diff -u -r1.15 store.c
--- src/programs/store.c        21 Sep 2023 10:18:38 -0000      1.15
+++ src/programs/store.c        25 Sep 2023 22:53:49 -0000
@@ -651,14 +651,14 @@
                        break;
        }
 
-       free(request);
-
        if (status < 0)
        {
                fprintf(stderr, "%s %d\n", _("Error handling request"),
                        request->request);
        }
 
+       free(request);
+
 out:
        printf("%s %s\n\n", _("disconnecting"), addrString);
        shutdown(conn->sockFd, SHUT_RDWR);
That make clean error is/can be ignored, or else just remove 'patches' and 'work' from the top-level Makefile

Code: Select all

        rm -Rf ${BUILDROOT}
        find -name '*.rej' -exec rm {} \;
        find -name '*.orig' -exec rm {} \;
-       -find contrib dist docs patches software src store utils work \
+       -find contrib dist docs software src store utils \
                -type f -a ! -name '*.sh' -exec chmod -x {} \; 2> /dev/null
 
Both of these are fixed in the next release I'm working on
qmastery
Posts: 31
Joined: Mon Nov 19, 2018 8:48 pm

Re: Visopsys 0.92 Relased

Post by qmastery »

andymc wrote: Thu Jan 04, 2024 9:53 amBoth of these are fixed in the next release I'm working on
:text-thankyouyellow: very much! Also, Visopsys 0.92 runs fine as a virtual floppy under coreboot+SeaBIOS - if to make a "/ramdisk" file, of course. By the way, please could you tell me the differences between the floppy versions of Visopsys 0.92 and Partition Logic 0.92? :character-cookiemonster:
User avatar
andymc
Posts: 589
Joined: Tue Nov 16, 2010 7:20 pm

Re: Visopsys 0.92 Relased

Post by andymc »

qmastery wrote: Fri Jan 05, 2024 10:07 pm please could you tell me the differences between the floppy versions of Visopsys 0.92 and Partition Logic 0.92?
Visopsys and Partition Logic are essentially the same, on any given medium. Just some different config files and different startup programs.
Post Reply