diff options
author | Lukas Larsson <[email protected]> | 2014-03-27 09:59:57 +0100 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2014-03-27 09:59:57 +0100 |
commit | ed483c484f1752151e73ed0c060b61312e59a397 (patch) | |
tree | e67bf81a49a7fcb6ec4380f5fa73fbc920bb3199 /erts/emulator/sys/ose/erl_poll.c | |
parent | 978f3cbfa9eb46dcb6987e2b0ce5b4b7727dd17b (diff) | |
parent | d2a5dc042c02dce5bc518eb576ea496af50e6373 (diff) | |
download | otp-ed483c484f1752151e73ed0c060b61312e59a397.tar.gz otp-ed483c484f1752151e73ed0c060b61312e59a397.tar.bz2 otp-ed483c484f1752151e73ed0c060b61312e59a397.zip |
Merge branch 'lukas/ose/master-17.0/OTP-11334'
* lukas/ose/master-17.0/OTP-11334:
ose: Fix erts assert failed printouts
ose: fix for packet_bytes in fd/spawn driver.
ose: Prepare slave for running on OSE
ose: Fix bug when hunting for signal proxy
ose: Implement tcp inet driver for OSE
ose: Add ifdefs for HAVE_UDP
ose: Yielding has to be done differently for background processes.
ose: Print faults in aio sys driver calls
ose: Prinout errno when to_erl read fails
ose: erlang display goes to ramlog printf
ose: Initiate stdin/stdout/stderr
ose: Break lmconf into one per load module
ose: Reset busy port when pdq empty
ose: Restore the owner of the signal
Diffstat (limited to 'erts/emulator/sys/ose/erl_poll.c')
-rw-r--r-- | erts/emulator/sys/ose/erl_poll.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/erts/emulator/sys/ose/erl_poll.c b/erts/emulator/sys/ose/erl_poll.c index ca1ed6e53a..7d2a3d1e0b 100644 --- a/erts/emulator/sys/ose/erl_poll.c +++ b/erts/emulator/sys/ose/erl_poll.c @@ -551,7 +551,12 @@ int erts_poll_wait(ErtsPollSet ps, fd.id, fd.signo, current_process()); erts_send_error_to_logger_nogl(dsbufp); timeout = 0; - ASSERT(0); + /* Under normal circumstances the signal is deallocated by the + * driver that issued the select operation. But in this case + * there's no driver waiting for such signal so we have to + * deallocate it here */ + if (sig) + free_buf(&sig); } else { int i; struct erts_sys_fd_type *fd = NULL; @@ -737,6 +742,7 @@ union SIGNAL *erl_drv_ose_get_signal(ErlDrvEvent drv_ev) { ev->msgs = msg->next; ethr_mutex_unlock(&ev->mtx); erts_free(ERTS_ALC_T_FD_SIG_LIST,msg); + restore(sig); return sig; } } |