view .hgignore @ 28347:00a9a49c7670 stable

improve interpreter shutdown process (bug #56952) This change is a further attempt to avoid segfaults when shutting down the interpreter and exiting the GUI event loop. The latest approach is to have the interpreter signal that it is finished with "normal" command execution (REPL, command line script, or --eval option code), then let the GUI thread process any remaining functions in its event loop(s) then signal back to the interpreter that it is OK to shutdown. Once the shutdown has happened (which may involve further calls to the GUI thread while executing atexit functions or finish.m or other shutdown code, the interpreter signals back to the GUI that shutdown is complete. At that point, the GUI can delete the interpreter object and exit. * ObjectProxy.h, ObjectProxy.cc (ObjectProxy::sendFinalize): New signal. (ObjectProxy::ObjectProxy): Connect/disconnect sendFinalize signal. (ObjectProxy::update, ObjectProxy::finalize): Use normal signal/slot connection. * interpreter-qobject.h, interpreter-qobject.cc (interpreter_qobject::ready): Rename from octave_ready_signal. Change all uses. (interpreter_qobject::execution_finished): Rename from octave_finished_singal. Change all uses. (interpreter_qobject::shutdown_finished): New signal. (interpreter_qobject::shutdown): New slot. (interpreter_qobject::execute): After interpreter finishes with normal execution, simply signal that execution has finished. Don't attempt to disable connecton to GUI or cleanup/delete interpreter. * octave-qobject.h, octave-qobject.cc (base_qobject::handle_interpreter_execution_finished): Rename from handle_octave_finished): Simply emit a signal requesting an orderly shutdown of the interpreter. Change all uses. (base_qobject::handle_interpreter_shutdown_finished): New slot. (base_qobject::request_interpreter_shutdown): New signal. (base_qobject::base_qobject): Connect request_interpreter_shutdown to interpreter_qobject::shutdown slot. * interpreter.h, interpreter.cc (interpreter::shutdown): Rename from cleanup and make public. (interpreter::~interpreter): Don't call cleanup here.
author John W. Eaton <jwe@octave.org>
date Fri, 22 May 2020 12:54:13 -0400
parents 3c6a91ee72c2
children 6b2e5f8f306b
line wrap: on
line source

syntax: regexp
## The recurrent (^|/) idiom in the regexps below should be understood
## to mean "at any directory" while the ^ idiom means "from the
## project's top-level directory".

## gnulib related files
(^|/)gnulib$
# This directory gets created by gnulib during the build.
(^|/)libgnu$
# gnulib makes these silly backup files.
.~$

## m4 related files
# This directory mostly contains cruft during build time, but it does
# contain some Octave code, so be more careful about what we ignore here.
^m4/(?!ax_).+\.m4$

## Autoconf, Automake automatically generated files
^aclocal\.m4$
^autom4te\.cache$
^config\.in\.h$
^configure$
(^|/)config.cache$
(^|/)config.h$
(^|/)config.log$
(^|/)config.status$

^Makefile\.in$
^INSTALL$

## CMake associated files
# Octave doesn't use CMake, but some IDEs use this index file to indicate
# what files are part of a project (e.g., CLion).  Ignore it (bug #55901).
^CMakeLists.txt$

## Emacs associated files
(^|/)TAGS$
(^|/)semantic.cache$

## Scripts associated with building Octave
^build-aux/config\.(guess|rpath|sub)$
(^|/)build-aux/check-subst-vars\.sh$
^build-aux/depcomp$
^build-aux/install-sh$
^build-aux/ltmain\.sh$
^build-aux/mdate-sh$
^build-aux/missing$
^build-aux/move-if-change$
(^|/)build-aux/subst-config-vals\.sh$
(^|/)build-aux/subst-cross-config-vals\.sh$
(^|/)build-aux/subst-script-vals\.sh$
^build-aux/texinfo\.tex$
^build-aux/ylwrap$

## Mercurial associated files
(^|/)HG-ID$

## Timestamp files used in build process
.*/\.dirstamp$
.*/\.octave-dirstamp$

## Intermediate compilation results for libraries
\.la$
.*/\.libs/
\.Plo$
\.Po$

## DLDFCN associated files
^libinterp/dldfcn/module\.mk$
(^|/)libinterp/dldfcn/PKG_ADD$
(^|/)libinterp/dldfcn/.*\.oct$

## liboctave/ directory associated patterns
# E.g., liboctave/operators/smx-op-inc.mk
^liboctave/operators/\w+-op-\w+\.mk$

## scripts/ directory associated patterns
# Package files
(^|/)scripts/.*/PKG_ADD$
# Java files
(^|/)scripts/java/octave\.jar$
(^|/)scripts/java/org/octave/.*\.class$

## libgui/ directory associated patterns
# Files generated by moc tool
(^|/)libgui/.*/moc-.*\.(cc|h)$
(^|/)libgui/languages/.*\.qm$

## Ignore patterns associated with documentation
# Info generated files
# E.g., doc/faq/OctaveFAQ.info, doc/interpreter/octave.info-4
^doc/\w+/\w+\.info(-\d+)?$

# Texinfo created temporary directories
(^|/)doc/(interpreter|liboctave)/(octave|liboctave)\.t2(d|p)/
# Texinfo created files
(^|/)doc/interpreter/.*\.texi$

# DOCSTRINGS files built in the source tree
(^|/)(libinterp|scripts)/DOCSTRINGS$

# Generated HTML directories
(^|/)doc/interpreter/octave\.html/
(^|/)doc/liboctave/liboctave\.html/

# Miscellaneous auto-generated files
(^|/)doc/interpreter/octave\.dvi$
(^|/)doc/interpreter/octave\.ps$
(^|/)doc/interpreter/doc-cache$
(^|/)doc/interpreter/octave_interpreter\.q(ch|hc)$

# Images and scripts for documentation
^doc/interpreter/images\.mk$
(^|/)doc/interpreter/.*\.eps$
(^|/)doc/interpreter/.*\.pdf$
(^|/)doc/interpreter/.*\.png$
(^|/)doc/interpreter/.*\.txt$

# timestamps for doc directory
^doc/\w+/stamp-(vti|\d+)$
^doc/\w+/version-\w+\.texi$

## Test associated patterns
-tst$