[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Viuavm-commits] [SCM] Viua VM branch devel updated. v0.9.0-2665-g087009
From: |
git |
Subject: |
[Viuavm-commits] [SCM] Viua VM branch devel updated. v0.9.0-2665-g087009b |
Date: |
Fri, 10 Apr 2020 18:40:17 +0200 (CEST) |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Viua VM".
The branch, devel has been updated
via 087009b621e4b98763d626ec9e578372fa214a55 (commit)
via 42b11ad50f35f3a2c6356535d97c89f39dcd8245 (commit)
via 8b08c132dc536479a5b5fc2aecb75672d361e9d8 (commit)
via eb08f8edab35cd6d3389f13636d6296467428f10 (commit)
from 71220456451ec455c39748299da06d5b0a737088 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 087009b621e4b98763d626ec9e578372fa214a55
Author: Marek Marecki <address@hidden>
Date: Thu Apr 9 21:14:53 2020 +0200
Save exception throw points for easier debugging
Exceptions can now include information about "throw points". A throw
point is a location (bytecode address) at which the exception was
emitted. Failed program may be disassembled with --debug option to
discover the instruction that triggered the exception.
An example:
stack trace: from entry point, most recent call last...
main/0/0()
uncaught object: Exception = no message received
throw points:
address: 0x0010 (byte 16) inside 0x55feedc34200 [a.out]
address: 0x0033 (byte 51) inside 0x55feedc34200 [a.out]
frame details:
non-empty registers: 1/2:
registers[1]: <Process> Process: 0x74deadbeef
no arguments were passed to this frame
This means that the exception was first thrown at address 0x0010 inside
jump base 0x55feedc34200, which happens to be module "a.out". It was
then rethrown at address 0x0033 inside the same jump base.
If jump base addresses are the same it means that the exception did not
cross module boundaries.
If we disassemble the a.out module and check the bytes we can deduce the
chain of events that lead to the failure:
$ viua-dis --debug a.out | less
...
; absolute address: 0x0010
receive void 10ms
...
; absolute address: 0x0033
join void %1 local infinity
The fact that the exception has more than one throw point suggests that
it was either caught but rethrown (maybe the handler was just adding
some additional information), or it was first thrown in a different
actor than the one that reported it.
With this information we can say that the actor did not receive a
message, did not cope well with this and died. Then, its parent actor
attempted to join it but did not expect an exception to arrive and also
died.
commit 42b11ad50f35f3a2c6356535d97c89f39dcd8245
Author: Marek Marecki <address@hidden>
Date: Thu Apr 9 19:12:02 2020 +0200
Fix: cancelling I/O works even if the fd never becomes ready
Before this fix cancellation was only detected in result of the work.
This meant that the interaction must have at least tried to do something
in order for the cancellation to be noticed. If the fd for the
interaction never became ready then the cancellation was never noticed
and the 'io_wait' waiting for the cancellation to take effect never
finished if it had timeout set to 'infinity' as it should.
commit 8b08c132dc536479a5b5fc2aecb75672d361e9d8
Author: Marek Marecki <address@hidden>
Date: Wed Apr 8 20:14:45 2020 +0200
Better exception message on invalid struct field access
The message now includes the field name.
commit eb08f8edab35cd6d3389f13636d6296467428f10
Author: Marek Marecki <address@hidden>
Date: Sat Apr 4 11:59:31 2020 +0200
Add a function for fetching stdout output from a command
-----------------------------------------------------------------------
Summary of changes:
include/viua/exceptions.h | 7 ++--
include/viua/kernel/kernel.h | 1 +
include/viua/process.h | 2 ++
include/viua/types/exception.h | 17 +++++++++
src/kernel/kernel.cpp | 13 +++++++
src/process.cpp | 21 ++++++++++--
src/process/instr/concurrency.cpp | 22 ++++++++----
src/process/instr/io.cpp | 3 +-
src/process/instr/tcmechanism.cpp | 2 +-
src/scheduler/io/scheduler.cpp | 10 +++++-
src/scheduler/process.cpp | 23 ++++++++++---
src/stdlib/os.cpp | 72 ++++++++++++++++++++++++++++++++++++++-
src/types/exception.cpp | 14 ++++++++
src/types/struct.cpp | 6 ++--
14 files changed, 190 insertions(+), 23 deletions(-)
hooks/post-receive
--
Viua VM
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Viuavm-commits] [SCM] Viua VM branch devel updated. v0.9.0-2665-g087009b,
git <=