- If a program crashed due to an invalid function pointer, the stack
was being incorrectly unwound such that the top frame would actually
be skipped, preventing one from seeing the actual line of code that
invoked said pointer. On x86, we now check if the IP of the top frame
of the stack lies at a readable location in order to catch this case.
- The actual reason the hidden node wasn't being released as expected
was that ContainerListener::ModelNodeHidden() added a reference on
behalf of its indirect target, while the latter never actually
took ownership of said reference.
- In the special case of an address node with a hidden child, we
must send notifications for removal of the hidden compound's
children rather than for the hidden node itself. Otherwise the
base TreeTable's state gets out of sync, leading to a crash when
attempting to typecast such a node.
As there are only 8 bits for the index in the coarse page table entries
the maximum index is 256. This makes us correctly move to the next page
directory once we've run through all entries. Fixes missing unmap of
pages that crossed that boundary and consequent panic "page still has
mappings" when the page was removed from a cache.
by adding the const specifier to the uint8* parameters of the
prototypes of the vesa_set_cursor_shape and vesa_set_cursor_bitmap
functions.
Thanks looncraz for pointing this out.
- When an image creation notification is received, the thread
that provoked it needs to be suspended until the debugger has
finished loading the image's debug information. Otherwise, if that
image had a breakpoint in it, it was possible that the thread would
execute past the code where the breakpoint should be before the
debugger had a chance to actually install it.
- Only update breakpoints when debug info loading has actually finished.
* Remove error text as giving SetCurrentContext
a NULL bitmap isn't a critical error.
* Ensure old front buffer is flushed on SetCurrentContext
* Small style fix
The ATA info block has the model, serial and firmware revision byte
swapped that we already converted and then printed out correctly. The
original values were however copied to the SCSI inquiry data so the
device names that end up in different places were incorrect. This
fixes#7926.
Also added a comment explaining that there's way too little space in
the SCSI inquiry block to fit in the full ATA data.
* Original patch by Morgul as part of #4235. This does not close the ticket,
however.
* Updated the patch to not show empty '()' in case the partition type
returned was NULL.
I made the following changes to the original patch:
* Add const to the cursor setting functions.
* Removed the legacy cursor copying code.
* Minor coding style cleanup.
The SCSI inquiry vendor and product information is concatenated into a
single string to form the device name. Multiple spaces are then
collapsed to make the string more readable. The space padding is quite
common as the fields are fixed size in the inquiry block.
- It can actually happen that an app crashes due to being at IP 0.
The short circuit was consequently preventing us from unwinding the
stack properly in such a case.
* This is still early, but I want to track the
development in tree.
* swpipe will support Gallium softpipe or llvmpipe
(llvm pipe will give improved software rendering
permance when llvm is included at os build time)
* Used Artur Wyszynski's original code as a
road map... however a *lot* has changed.
* Crashes at startup.. not in image yet
Since we have the same setup with a loaded and mapped boot archive, we
can reuse the MemoryDevice implemented in uboot. This gets the loader
to the stage where it loads and attempts to boot the kernel.
An archive (ramfs) to be loaded can be specified in the raspberry pi
config.txt with a certain base address. We can use this to put our
floppy boot archive into memory on startup.
During the start procedure we now map that archive so we can later
load the kernel from it.
Add more fields to arch framebuffer to hold the physical address and
size of the framebuffer. Then fill these in when mapping the
framebuffer to virtual memory.