viuavm-commits
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]