24 December 2020 2:00 PM

 

First, thanks for the info about geany internals.

 

I've been using geany for years and having multiple execution terminals simultaneously open

is part of my standard workflow.  It came as a complete surprise that yesterday it would not allow

me to do that.  I remembered that the previous day I had been working in geany when the

powerfail happened, so I began playing with the settings until geany started to behave again.

 

I tried various things, like putting in the complete path to the python binary.  What worked was

when I made a mistake and the execute failed with an error.

 

>From my 'geany.conf':

 


[tools]
terminal_cmd=x-terminal-emulator -e "env PYTHONPATH=/usr/local/lib/python2.7/site-packages /bin/sh %c"
browser_cmd=sensible-browser
grep_cmd=grep

 

Which is standard except for the PYTHONPATH adjustment which points geany to my personal library.

I added that after I discovered that the addendum to my '.bashrc':

 


# 20201017 enable using my personal packages
export PYTHONPATH="/usr/local/lib/python2.7/site-packages"

 


was ineffective from within geany, probably because 'sh' symlinks to some simpler shell.  Beyond

that, all configurations are from a standard ubuntu repository installation that was performed a few

days before the bash and geany configuration alterations.

 

I notice now that the build command is the unaltered default:

 

python "%f"

 

and that differs from the 'geany.conf' file, but that should not matter since the build

command becomes the %c in the config file.

 

Running just now a program that has a lengthy test suite, I see that the execute icon changes

from a gear to the circle slash and changes back almost immediately to the gear icon, where

the test suite is still running as I type this, and has now stopped.  I have no difficulty starting

other executions, even before the lengthy test completes, and all terminals remain open until

I explicitly close them, as I expect should happen.

 

That is to say, everything is working fine now, as it was yesterday after I caused the execute

command to throw an error and then restored the default.

 

The reason I mention this is that your paragraph on the icon behavior does not match my

experience, either over the past years or now.  Moreover, if I run the lengthy test suite and

immediately run the same test suite by clicking the immediately restored gear, I get a new

independent terminal instance and the first invocation does *not* terminate, but continues,

as I would expect it to do.  If I need to terminate the process, I can use ^C or simply close

the terminal window, so this experience also does not match your paragraph.

 

Finally looking in the task manager, I see geany is the parent of the terminal and the

terminal is the parent of a shell which is the parent of the lengthy test, as expected. 

If I suspend by closing the laptop in the middle of the lengthy test, and then reopen

the laptop and touch the power button to resume, the situation remains, as expected.

When the program stops, its process disappears, and the shell and the terminal remain

as expected.  When I close the terminal by whatever method, both the shell process

and the terminal process disappear, as expected.

 

In closing, I realize that the issue I reported is one of the most difficult kinds to track

down, and it is not likely to affect many people.  It is, however, real.  I did in fact

spend an hour of my time yesterday trying to resolve it.  The workaround I discovered

is effective, and given the rarity of  occurence, I certainly don't expect any concerted

effort to resolve it.  It should, however, remain in the back of your mind, especially

when you happen to be working on the geany initialization code, or perhaps gui

interactions with the os window manager.

 

I should point out that I am using Bodhi linux (5.1.0) which uses a variant of the

enlightenment libraries.  These are peculiar libraries, and you either love them or

hate them, and they do have some quirks.  The problem may be some bizarre

interaction between your gui libraries (presumably still gtk, for I chose geany

specifically because it uses gtk) and the enlightenment libraries, even if there

really is no temporary state storage in geany.

 

Sincerely

 

John_Hull

John_Hull@mail.com


 
 

Sent: Wednesday, December 23, 2020 at 5:56 PM
From: "elextr" <notifications@github.com>
To: "geany/geany" <geany@noreply.github.com>
Cc: "ruminations" <John_Hull@mail.com>, "Author" <author@noreply.github.com>
Subject: Re: [geany/geany] terminal persistence after crash (#2703)


 

If the Geany execute command item is activated while a command is running it terminates the command, this allows programs that get into an infinite loop to be terminated. When running in a terminal Geany does not know the process ID of the program, only of the terminal, so that is what is terminated, and hopefully it will terminate the program. Similarly as it does not know the program process id there is no way Geany can find out if the program has finished, only if the terminal has finished, so the execute action remains as "stop" until the terminal closes. So this part is working as intended.

Geany does not store any execute state when it closes because it no longer owns the terminal process when its restarted (if that process still existed) so there is no point in it doing so. I suspect that if the execute icon stays at stop then your laptop is not shutting down, it is hibernating or suspending, so Geany is restored in its previous state, but I have no idea if the terminal process termination is correctly delivered in that case, possibly not, but its not a scenario Geany has been designed to cope with, YMMV.

If you want to have multiple terminals open the command Geany runs (from Preferences->Tools->Terminal) must complete. I havn't tried it, but you could try modifying that preference to run the terminal in a shell and detaching it.


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.