Comments (5)
Also the 60 seconds wait time, might not be a wild guess. I can replicate a (not too practical, granted) session which takes 60 seconds to abort cleanly. (Why does it take so long, is a other question I guess.)
from new-session-manager.
I agree that finding out why clients hang has the priority. I experienced that myself and went on a bug hunt in my own programs, only to find out that Carla did the same. I don't know how jack metada could have anything to do with it though. Jack metadata does not need to be deleted manually by the clients, they can just quit.
And I admit that I still need to test if this 30/60s wait time happens after the session is closed or during the close operation. I thought it was after all clients had already reported, that they are done quitting. And THEN the process is still present.
The incentive for this is a FIXME comment in the code by Jonathan btw, to check on hanging clients and purge them. There are two places in the code that are copy pasted. My recent code change just handles one of them, the more common one.
from new-session-manager.
Why does it take so long, is a other question I guess.)
Looks like clients (like Carla, drumkv1_jack, ... ) are just responding quite slow on SIGTERM. Even when doing killall outside nsm, they're slow to respond (at least when multiple instances are running).
from new-session-manager.
SIGKILL as last resort is a option in this scenario probably (people won't die), with as disadvantage that bugs in clients might not get noticed / reported / improved / fixed.
But FYI some sessions seems to close cleanly, even after 60 seconds.
from new-session-manager.
FYI: Messing (quite literally) around with the code, adding osc_server->wait( 100 ); in close_session(), seems to improve closing a session significantly. I leave it to real C++/liblo coders to answer why, but at least there is an impact with a session with lot of clients (tested with a bunch of Mamba clients). Maybe it is useful to get this improved.
void
close_session ( )
{
if ( ! session_path )
return;
for ( std::list<Client*>::iterator i = client.begin();
i != client.end();
++i )
{
command_client_to_quit( *i );
osc_server->wait( 100 );
}
wait_for_killed_clients_to_die();
from new-session-manager.
Related Issues (20)
- jackpatch crashing at load (buffer overflow) HOT 5
- Does not compile on Alpine (musl)
- Use of pidfiles HOT 14
- server warning sessions folder HOT 2
- snprintf buffer overflow after f42b8e3aac with pipewire versions containing 0e847c97 HOT 1
- Change code to not depend on GNU compiler extensions
- Announce to running server, send also gui hidden/shown & dirty status HOT 1
- jackpatch fork rename
- Nsm-proxy fork rename
- non-session-manager gui incompatibility
- jackpatch, nsm-proxy, ... sends error messages to stdout
- Blocking dialogs from clients
- Clients should send errors to stderr
- Clients should use black/white for logging messages
- launch error, use of client labels
- Two NSM related keys for Desktop files HOT 2
- New extensions shouldn't use the /nsm prefix in the osc address HOT 2
- Documentation for "New" stuff HOT 4
- C shared or static library 'fltk' not found HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from new-session-manager.