profile
viewpoint
Brian Gianforcaro bgianfo @microsoft Seattle, WA https://bjg.io

bgianfo/last.fm-proxy 7

Updating the 2007 version by Vidar Madsen

bgianfo/pr-dash 7

Command Line UI for managing Azure DevOps Pull Requests

bgianfo/DES 4

Ground Up Implementation of DES

bgianfo/db 3

Database Project

bgianfo/mongodb-paper 3

Paper critiquing and plans to modify the system.

bgianfo/arf 2

An Adaptive Range Filter Implementation In Elixir

bgianfo/computer-graphics 2

OpenGL projects

bgianfo/configs 2

just my configs

bgianfo/dfly-valgrind 2

Port of valgrind to the Dragonfly BSD operating system.

bgianfo/pc-project 2

Parallel Computing One Project @ RIT

startedOmnifarious/posixpp

started time in 38 minutes

PR opened SerenityOS/serenity

WindowServer, LibGUI, SystemMenu: Fix ShutdownDialog theming

WindowServer seems to only notify clients of theme changes when they have a Window. As SystemMenu spends most of its time connected to WindowServer without displaying a window, it misses most theme changes. This PR adds a new asynchronous IPC call to WindowServer (RefreshSystemTheme,) which causes WindowServer to reply with an UpdateSystemTheme message. A relevant helper method is added to LibGUI::Window, and called in SystemMenu::ShutdownDialog's constructor so that it immediately receives and processes an UpdateSystemTheme message containing the current system theme shbuf ID.

+18 -0

0 comment

6 changed files

pr created time in an hour

pull request commentSerenityOS/serenity

Kernel+LibC+UserspaceEmulator: Handle MAX_PATH more gracefully

This is great! 😀

I was trying to do something similar with Core::File::read_link() — please take (another) look at that. So you think it makes sense to do this at the LibC level? Perhaps it does! What are the implications for Core::File::read_link() then?

But please don't allocate 4KB for the initial buffer, that's way too much for normal paths.

BenWiederhake

comment created time in an hour

pull request commentSerenityOS/serenity

LibGUI: Don't bubble key events up to parent windows

@awesomekling Not sure if this is the right solution. Should maybe all Window events be accepted? Or are there legitimate cases where a parent window would want an event that was technically sent to another window? Seems like EventLoop::pump will always bubble them up unless they're accepted.

tomuta

comment created time in 2 hours

PR opened SerenityOS/serenity

LibGUI: Don't bubble key events up to parent windows

Always accept the key events so that they don't bubble up to the parent object.

Fixes #4967

+5 -0

0 comment

1 changed file

pr created time in 2 hours

pull request commentSerenityOS/serenity

DisplaySettings: Add UI for switching the scale factor

Right, that's what it'd do. As the commit message says, I tried the other behavior first but it gets a bit messy because the lower few resolutions at 2x are below Serenity's minimum resolution.

Exposing logical coordinates everywhere is self consistent with the code too. I think I'd like to try this for a bit and see how it feels. We can definitely iterate on the ui though.

nico

comment created time in 3 hours

PR opened SerenityOS/serenity

add `patch` to fedora build deps
+1 -1

0 comment

1 changed file

pr created time in 3 hours

issue commentSerenityOS/serenity

LibGUI: Modal dialogs flow uncaught key events to parent window

This behaviour is also present in Terminal with the Settings and About dialogs.

nvella

comment created time in 3 hours

pull request commentSerenityOS/serenity

DisplaySettings: Add UI for switching the scale factor

Oh, and I didn't click "Apply" yet in screenshot two. When you click "Apply" after switching from 100% to 200% without touching the resolution dropdown, the qemu window sizes doubles in each dimenson.

So then it would use a display resolution of 2048x1536 in this particular example? That sounds confusing when it only shows 1024x768.

nico

comment created time in 4 hours

pull request commentSerenityOS/serenity

DisplaySettings: Add UI for switching the scale factor

Hm, I can't see a button for this in Ubuntu.

Maybe it requires certain hardware support to show up? Not sure, Here's how it looks like on 20.10: Screenshot from 2021-01-15 19-30-50

Windows only has a ui scale slider and no pixels at all as far as I can tell – I guess it always uses the display's native resolution? (But a qemu window has no such thing as a native resolution.)

Well in Windows 10 it's the madness of settings all over the place. I believe the resolution setting is in one place and then you have to click on advanced settings or something and then they have it there. Too lazy to boot into it to take a screenshot, but it's effectively the same as in Ubuntu: You pick the resolution as-is (in most cases you'd pick the native resolution of the display) and then a scale factor where 1x/100% is normal, 2x/200% everything is twice the size.

nico

comment created time in 4 hours

issue openedSerenityOS/serenity

LibGUI: Modal dialogs flow uncaught key events to parent window

Discovered this whilst trying to use TextEditor via keyboard navigation only. I attempted to close TextEditor having unsaved changes via Alt+F4. This opened the 'Unsaved Changes' modal. I struck the 'y' key, more or less expecting this to save changes, however it seems these keys haven't been bound yet in these dialogs (this is another issue.) To my surprise, my keypresses were still flowing to the text editor, even though the modal dialog was in the foreground. Enter/space still action the highlighted button in the dialog, so it seems that only the uncaught keypresses are flowing to the parent window.

Screenshot

image

created time in 4 hours

pull request commentSerenityOS/serenity

Applications: Basic implementation of Run

fwiw, TextEditor has a suggestions API you can use (on that note, maybe the suggestion trigger should be configurable?), and I think TextBox (which is a TextEditor) has a history thing.

That does look interesting, my original plan was to replace the TextBox with an editable ComboBox and populate it with the Run history, however using the TextEditor autocompletion may be another possible route. I feel the combo option would be the simplest to implement, and keeps us most true to a Windows-style Run, however I'd be open to the idea of possibly doing cool things with TextEditor suggestions.

By the way, I've just rebased the PR onto master and pledged sendfd so we should be working with the anonymous file changes :)

nvella

comment created time in 5 hours

pull request commentSerenityOS/serenity

DisplaySettings: Add UI for switching the scale factor

Oh, and I didn't click "Apply" yet in screenshot two. When you click "Apply" after switching from 100% to 200% without touching the resolution dropdown, the qemu window sizes doubles in each dimenson.

nico

comment created time in 5 hours

pull request commentSerenityOS/serenity

DisplaySettings: Add UI for switching the scale factor

Hm, I can't see a button for this in Ubuntu. (I'm using https://en.wikipedia.org/wiki/Cinnamon_(desktop_environment) ). Windows only has a ui scale slider and no pixels at all as far as I can tell – I guess it always uses the display's native resolution? (But a qemu window has no such thing as a native resolution.)

nico

comment created time in 5 hours

pull request commentSerenityOS/serenity

DisplaySettings: Add UI for switching the scale factor

Hm that seems rather confusing. I would have expected things to be twice as big when I select that option. At least that's what Windows and Ubuntu do. It would never cross my mind that I'd have to select a resolution other than the monitor's native resolution, half the resolution. Or am I misunderstanding this?

nico

comment created time in 5 hours

issue commentaxboe/liburing

liburing/io_uring not working in kernel version 5.9+ on Ubuntu

Yes, I'm using read, not recv. Turns out with recv this behaves as I expected! Thanks so much, I'd never have figured this out, I've always assumed recv was the same as read except that you can pass flags.

well, it's a io_uring specific behaviour, read(2) and et al. don't do that.

Does this depend on the kind of file descriptor I'm reading from? I think when I was reading from stdin instead of a socket I did see the short reads.

It should not. There was some specific bits that can indirectly slightly shift the observable behaviour, but that's not for sure

aliabbas299792

comment created time in 6 hours

pull request commentSerenityOS/serenity

DisplaySettings: Add UI for switching the scale factor

(fuzzer build is "/home/runner/work/serenity/serenity/Userland/Libraries/LibGfx/Bitmap.cpp:502: undefined reference to `Gfx::Bitmap::to_bitmap_backed_by_anon_fd() const'", not caused by this change, already broken at head.)

nico

comment created time in 6 hours

pull request commentSerenityOS/serenity

DisplaySettings: Add UI for switching the scale factor

dpi1x dpi2x

nico

comment created time in 6 hours

PR opened SerenityOS/serenity

Dpiui
+80 -12

0 comment

6 changed files

pr created time in 6 hours

issue commentmicrosoft/mssql-docker

SQL-Server 2019 docker container fails to start with -v option

I have this issue in k8s. :((

 # k logs mssql-57f6f78dbb-4jwwk
SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created.  Errno [13]

And, when I change the mapping to /var/opt/mssql/data I get this :

This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
2021-01-15 23:50:05.95 Server      Setup step is copying system data file 'C:\templatedata\master.mdf' to '/var/opt/mssql/data/master.mdf'.
2021-01-15 23:50:06.05 Server      ERROR: Setup FAILED copying system data file 'C:\templatedata\master.mdf' to '/var/opt/mssql/data/master.mdf':  2(The system cannot find the file specified.)
ERROR: BootstrapSystemDataDirectories() failure (HRESULT 0x80070002)

Why is an Ubuntu image looking in C: drive for template data?

ststeiger

comment created time in 6 hours

Pull request review commentSerenityOS/serenity

Kernel+LibC+UserspaceEmulator: Handle MAX_PATH more gracefully

 char* realpath(const char* pathname, char* buffer)         return nullptr;     }     size_t size = PATH_MAX;-    if (buffer == nullptr)+    bool self_allocated = false;+    if (buffer == nullptr) {         buffer = (char*)malloc(size);+        self_allocated = true;+    }     Syscall::SC_realpath_params params { { pathname, strlen(pathname) }, { buffer, size } };     int rc = syscall(SC_realpath, &params);     if (rc < 0) {+        free(buffer);

Adding bool self_allocated = false; and self_allocated = true; in 7f66663 would make more sense in my opinion though.

BenWiederhake

comment created time in 7 hours

Pull request review commentSerenityOS/serenity

Kernel+LibC+UserspaceEmulator: Handle MAX_PATH more gracefully

 char* realpath(const char* pathname, char* buffer)         return nullptr;     }     size_t size = PATH_MAX;-    if (buffer == nullptr)+    bool self_allocated = false;+    if (buffer == nullptr) {         buffer = (char*)malloc(size);+        self_allocated = true;+    }     Syscall::SC_realpath_params params { { pathname, strlen(pathname) }, { buffer, size } };     int rc = syscall(SC_realpath, &params);     if (rc < 0) {+        free(buffer);

Oh, nevermind. you added it in ed3410f but only used it from 7f666635. I didn't notice.

BenWiederhake

comment created time in 7 hours

Pull request review commentSerenityOS/serenity

Kernel+LibC+UserspaceEmulator: Handle MAX_PATH more gracefully

 char* realpath(const char* pathname, char* buffer)         return nullptr;     }     size_t size = PATH_MAX;-    if (buffer == nullptr)+    bool self_allocated = false;+    if (buffer == nullptr) {         buffer = (char*)malloc(size);+        self_allocated = true;+    }     Syscall::SC_realpath_params params { { pathname, strlen(pathname) }, { buffer, size } };     int rc = syscall(SC_realpath, &params);     if (rc < 0) {+        free(buffer);

You forgot did not use self_allocated.

BenWiederhake

comment created time in 7 hours

PR opened SerenityOS/serenity

Kernel+LibC+UserspaceEmulator: Handle MAX_PATH more gracefully

This is the surprisingly short result of a surprisingly long discussion about long paths. Now

This covers all cases of that use MutableBufferArgument (readlink and realpath). If this gets general approval, we should implement a similar "retry dance" for other syscalls that can return arbitrarily long paths, at least getcwd.

CC @bugaevc, what do you think? :)

+30 -23

0 comment

4 changed files

pr created time in 7 hours

push eventSerenityOS/serenity

Linus Groh

commit sha e83799dc02dfd092cf8970e7df587cd24eadc25c

AK: Add JsonArray(const Vector<T>) constructor This simplifies creating a JsonArray from a Vector<T> (when there's a JsonValue(T) constructor overload for T, that is).

view details

Linus Groh

commit sha 7ad9b116f7aef7bce5f8b7abe6095aa7a71804ee

AK: Add String::join() helper function This is a simple wrapper around StringBuilder::join().

view details

Linus Groh

commit sha 568cde5e233633da1cc199406374bb996236b3cf

Kernel+LibELF+LibCoreDump+CrashReporter: Use JSON for ProcessInfo This is in preparation of adding (much) more process information to coredumps. As we can only have one null-terminated char[] of arbitrary length in each struct it's now a single JSON blob, which is a great fit: easily extensible in the future and allows for key/value pairs and even nested objects, which will be used e.g. for the process environment, for example.

view details

Linus Groh

commit sha 3718a16f5903ebacaa5043c9dd477251a17f35b6

CrashReporter: Put backtrace TextEditor in a TabWidget Since CrashReporter will be showing more info from coredumps soon, we need tabs to put those things somewhere! :^)

view details

Linus Groh

commit sha 057ae36e32da6d0d6b4ba5afdf90a31dd6e950fc

Kernel: Prevent threads from being destructed between die() and finalize() Killing remaining threads already happens in Process::die(), but coredumps are only written in Process::finalize(). We need to keep a reference to each of those threads to prevent them from being destructed between those two functions, otherwise coredumps will only ever contain information about the last remaining thread. Fixes the underlying problem of #4778, though the UI will need refinements to not show every thread's backtrace mashed together.

view details

Linus Groh

commit sha 7668e968afff92d90f08c5467e93e89366d39750

LibCoreDump+Crash{Daemon,Reporter}: Make backtraces thread-specific We want to show an individual backtrace for each thread, not one containing backtrace entries from all threads. Fixes #4778.

view details

Linus Groh

commit sha 1ccc2e6482aa9567039c8bc8b9df35f9275c4947

Kernel: Store process arguments and environment in coredumps Currently they're only pushed onto the stack but not easily accessible from the Process class, so this adds a Vector<String> for both.

view details

Linus Groh

commit sha 0187fd4fdd7c9272265d24abe9a37debfb864dee

LibCoreDump: Expose arguments and environment We can pull those from the coredump's ProcessInfo JSON, do some basic sanity checks and expose them as ready-to-use Vector<String>s.

view details

Linus Groh

commit sha 33c31e2198d6cc4cfde5ced24188d5894b5b060c

CrashReporter: Show arguments and environment Arguments as a simple label, environment in a new tab. :^) Closes #4779.

view details

Linus Groh

commit sha 6f666c20f5ae95a4aaef4da61eb301887c07eb20

CrashReporter: Show CPU register state for all threads Closes #4777 .

view details

push time in 8 hours

issue closedSerenityOS/serenity

CrashReporter: Show CPU register state for all threads

It would be very nice if we could see what was in the CPU registers when the crash happened.

closed time in 8 hours

awesomekling

issue closedSerenityOS/serenity

CrashReporter: Show how crashed process was invoked (arguments + environment)

It would be cool if we could see the arguments and environment passed to the crashed process.

closed time in 8 hours

awesomekling

issue closedSerenityOS/serenity

CrashReporter: Show backtrace for all threads

Right now it seems limited to one thread. If I crash FileManager after it has spawned a thumbnail generation thread, I only see the thumbnail thread backtrace, not the main thread.

(To reproduce, open FileManager and browse to /res/icons/16x16 or any directory with images, then killall -ABRT FileManager)

closed time in 8 hours

awesomekling

PR merged SerenityOS/serenity

CrashReporter: Implement kling's feature requests

As promised. Crashing programs just got even more exciting!


Featuring:

  • Tabs, because there's no way all of this will fit into the UI otherwise.
  • Per-thread backtraces image
  • CPU register states (also per-thread) image
  • Process arguments and environment image
+293 -68

1 comment

14 changed files

linusg

pr closed time in 8 hours

push eventSerenityOS/serenity

Andreas Kling

commit sha 633915e792d7de56ce30fa527d4421d16e80ec6c

LibGfx: Make Gfx::ShareableBitmap use anonymous files instead of shbufs

view details

Andreas Kling

commit sha 333366a99d09ede55a025f7294617e5d89ce630b

WindowServer+Taskbar: Send WM icon updates as Gfx::ShareableBitmap Window icons in Taskbar were previously received in WM events with shbuf ID's. Now that Gfx::ShareableBitmap is backed by anonymous files, we can easily switch to using those.

view details

Andreas Kling

commit sha 71f50b6e94845cda078f08fbdc8a1cf19cc5d086

LibGUI: Window icons no longer need to be backed by shbufs This allows us to remove Window::create_shared_bitmap() entirely.

view details

Andreas Kling

commit sha 4839f36f5ed688cb56171a50e11845f7a44cf0c4

LibGUI: Fix OpacitySlider hairline disappearing towards the left Whoops, we were scaling the alpha channel of the hairline color along with the RGB channels.

view details

push time in 8 hours

more