[PD] troubles killing a pd instance with shell object

Jonathan Wilkes jancsika at yahoo.com
Sat Apr 13 21:49:55 CEST 2013


When you launch the first pd followed with "&" then run the script,
you end up with two separate pd instances.

When you use [shell] to launch the second one, you end up with
the second pd instance as a child of the first process.  You can
visualize the difference using "ps -Ha".

Unfortunately I don't know enough about interprocess communication
under Linux to know why it freezes.  Maybe this hack will work:

[echo "env DISPLAY=:0 pd-extended" | at now(
|
[shell]

Replace pd-extended with the name of your pd executable.  Now
the second Pd instance runs as a child of the "at" daemon, so
you should be able to close the original Pd instance without a
problem.

I should mention that this highlights a big security risk when
running arbitrary Pd patches with a setup where [shell] is loadable
by default.  Using the "at" command (or probably other tricks) the
pd patch can run arbitrary code that can stick around after that
Pd instance has terminated.

Also, keep in mind that there's an X11 diagnostic tool called
xinput that echoes the keyboard input for _every_ window in
the x session, and that there's an object called [netsend], and
a startup flag called -nogui.

But even without [shell], a patch can dynamically created [key]
and [netsend] objects inside the unvis'd pd-_float or pd-_float_array
subpatches that exist in every running instance of Pd, and that
code will stick around until the Pd instance is terminated.  But it
will only log keystrokes that are attached to Pd patch windows.

-Jonathan




>________________________________
> From: Marco Donnarumma <devel at thesaddj.com>
>To: pd-list at iem.at 
>Sent: Saturday, April 13, 2013 11:39 AM
>Subject: [PD] troubles killing a pd instance with shell object
> 
>
>
>Hi all,
>
>
>I'm having some troubles with two pd instances and [shell].
>
>
>I launch a patch with the first Pd instance from the terminal. Here, i use [shell] to  create a new patch and open it with a second Pd instance.
>
>
>when the new patch is loaded, it sends a [quit( message to [noquit] to the first pd-instance patch, via OSC, in order to kill it.
>
>
>everything works fine until the first instance receive the OSC message. At this point, the pd process is killed but the GUI freezes on the screen, and the terminal freezes too.
>
>
>
>If I launch the first Pd instance from the terminal with '&', and then run the script through
>
> the same terminal, it works fine.
>
>
>
>this below is the script. nothing fancy.
>
>
>any idea why the process doesn't work? 
>
>
>thanksss!
>
>
>
>
>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
>#!/bin/bash
>
>NEWPATCH=$1
>cp /usr/share/Xth-Sense/Xth-Sense.pd $HOME/Desktop/$NEWPATCH.pd;
>sleep 2;
>pdextended -alsa $HOME/Desktop/$NEWPATCH.pd;
>exit
>\\\\\\\\\\\\\\\\\\
>
>
>
>
>
>
>--
>Marco Donnarumma
>New Media + Sonic Arts Practitioner, Performer, Teacher, Director.
>Embodied Audio-Visual Interaction Research Team.
>Department of Computing, Goldsmiths University of London
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>Portfolio: http://marcodonnarumma.com
>Research: http://res.marcodonnarumma.com
>Director: http://www.liveperformersmeeting.net
>_______________________________________________
>Pd-list at iem.at mailing list
>UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
>
>
>



More information about the Pd-list mailing list