Re: [Pharo-dev] OSProcess bug ?
Hi, Yes, nothing appears. When I interupt the process (ctrl-c), an error appears: --- close failed in file object destructor: sys.excepthook is missing lost sys.stderr --- Jannik 2015-02-26 15:56 GMT+01:00 Ben Coman b...@openinworld.com: On Thu, Feb 26, 2015 at 12:05 AM, David T. Lewis le...@mail.msen.com wrote: Hi Jannik, One other thing I just thought of: Check and see if your rostopic program is actually writing to standard output, as opposed to writing directly to /dev/tty. From a terminal window, I think you could do this: $ rostopic out.txt Would using a pipe better represent the interaction with OSProcess? e.g... $ rostopic | tail cheers -ben -- ~~Jannik Laval~~ École des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/
Re: [Pharo-dev] OSProcess bug ?
Hi Ben, 2015-02-26 15:08 GMT+01:00 Ben Coman b...@openinworld.com: On Thu, Feb 26, 2015 at 1:10 AM, jannik laval jannik.la...@gmail.com wrote: Hi Dave, 2015-02-25 17:05 GMT+01:00 David T. Lewis le...@mail.msen.com: Hi Jannik, One other thing I just thought of: Check and see if your rostopic program is actually writing to standard output, as opposed to writing directly to /dev/tty. From a terminal window, I think you could do this: $ rostopic out.txt Yes, it writes on the file after a ctrl-c. Is that a hint? So if in one terminal you run $ rostopic out.txt then without hitting ctrl-c, in another terminal view the contents of out.txt, is it empty? Yes, it is empty. So, the best way I have is: I run the script I kill it after a while I receive the infos. But when I want to terminate it , nothing happens: the process is not killed, and I have no error. Jannik Do you get different behaviour with this between each of these mode [1]?... - *Latching mode* - rostopic will publish a message to /topic_name and keep it *latched* -- any new subscribers that come online after you start rostopic will hear this message. You can stop this at any time by pressing ctrl-C. *Once mode* - If you don't want to have to stop rostopic with ctrl-C, you can publish in *once mode*. rostopic will keep the message latched for 3 seconds, then quit. *Rate mode*. - In rate mode, rostopic will publish your message at a specific rate. For example, -r 10 will publish at 10hz. For file and piped input, this defaults to 10hz. Options: - -l, --latch New in Diamondback - Enable latch mode. Latching mode is the *default* when using command-line arguments. -r RATE - Enable *rate mode*. Rate mode is the *default* (10hz) when using piped or file input. -1, --once - Enable *once mode*. cheers -ben [1] http://wiki.ros.org/rostopic#rostopic_pub [2] http://answers.ros.org/question/59070/disable-latching-for-rostopic-in-piping-mode/ -- ~~Jannik Laval~~ École des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/
Re: [Pharo-dev] OSProcess bug ?
On Thu, Feb 26, 2015 at 12:05 AM, David T. Lewis le...@mail.msen.com wrote: Hi Jannik, One other thing I just thought of: Check and see if your rostopic program is actually writing to standard output, as opposed to writing directly to /dev/tty. From a terminal window, I think you could do this: $ rostopic out.txt Would using a pipe better represent the interaction with OSProcess? e.g... $ rostopic | tail cheers -ben
Re: [Pharo-dev] OSProcess bug ?
On Thu, Feb 26, 2015 at 1:10 AM, jannik laval jannik.la...@gmail.com wrote: Hi Dave, 2015-02-25 17:05 GMT+01:00 David T. Lewis le...@mail.msen.com: Hi Jannik, One other thing I just thought of: Check and see if your rostopic program is actually writing to standard output, as opposed to writing directly to /dev/tty. From a terminal window, I think you could do this: $ rostopic out.txt Yes, it writes on the file after a ctrl-c. Is that a hint? So if in one terminal you run $ rostopic out.txt then without hitting ctrl-c, in another terminal view the contents of out.txt, is it empty? Do you get different behaviour with this between each of these mode [1]?... - *Latching mode* - rostopic will publish a message to /topic_name and keep it *latched* -- any new subscribers that come online after you start rostopic will hear this message. You can stop this at any time by pressing ctrl-C. *Once mode* - If you don't want to have to stop rostopic with ctrl-C, you can publish in *once mode*. rostopic will keep the message latched for 3 seconds, then quit. *Rate mode*. - In rate mode, rostopic will publish your message at a specific rate. For example, -r 10 will publish at 10hz. For file and piped input, this defaults to 10hz. Options: - -l, --latch New in Diamondback - Enable latch mode. Latching mode is the *default* when using command-line arguments. -r RATE - Enable *rate mode*. Rate mode is the *default* (10hz) when using piped or file input. -1, --once - Enable *once mode*. cheers -ben [1] http://wiki.ros.org/rostopic#rostopic_pub [2] http://answers.ros.org/question/59070/disable-latching-for-rostopic-in-piping-mode/
Re: [Pharo-dev] OSProcess bug ?
Hi Jannik, One other thing I just thought of: Check and see if your rostopic program is actually writing to standard output, as opposed to writing directly to /dev/tty. From a terminal window, I think you could do this: $ rostopic out.txt If you run this get output written to the out.txt file, that is good. If you run it and see output to your terminal window, it would mean that the rostopic program was writing directly to /dev/tty (so there would never be any output to read with a PipeableOSProcess). I would not worry about the missing AioPlugin. Your code should still work without the plugin. Dave Hi Dave, 2015-02-25 1:13 GMT+01:00 David T. Lewis le...@mail.msen.com: On Tue, Feb 24, 2015 at 08:33:41PM +0100, jannik laval wrote: Hi pharoers, I am playing with OSProcess. I am using an example, and I am annoyed with a strange bug: Here is the code I want to execute, and does not work: |thread process output| myCmd := 'rostopic bw /turtle1/pose'. thread := [process := (PipeableOSProcess command: myCmd) ] fork. 3 second wait. output := process upToEnd. output inspect. thread terminate. === Hi Jannik, I am not familiar with the rostopic command, but it is common for some Unix programs to flush their output when the stdout is connected to /dev/tty (a terminal), but not necessarily if connected to a pipe or to a file. So it may be that the running rostopic program is producing output, but that the output has not yet been flushed to the pipe connected to your PipeableOSProcess. Thank you for your explanation. So, what I can do is to send a sigint to terminate the process and receive the info. But sending process processProxy sigint. does nothing. By the way I have a warning on the AIOPlugin... Probably I should reinstall my VM. I also try process flush, but it does not do anything. Your #upToEnd call will read the available data from the OS pipe, but it will not read data that was written by the rotopic program, but not yet flushed out to the OSPipe. So I am guessing that this may be why the data seems to be missing. I notice also that you are putting your PipeableOSProcess into a separate Smalltalk process using #fork. This is probably not necessary, so try getting rid of the #fork and the later thread terminate. It will not fix the problem for you, but it will simplify the code. Ok, it is simpler like that. You are right, it does not help :) Thank you for your help. Dave 'rostopic bw /turtle1/pose' is a command that is a loop displaying the current bandwidth of a ROS process. In a terminal, it works fine. With OSProcess the output value is empty. My source code is correct: if I replace myCmd by : myCmd := 'ping localhost'. It is a loop too, and it returns a correct string. I have clearly no idea of where I have to search... Any help or discussion about that would be great :) Thank you, Oups, some infos: I am using Ubuntu 14.04 Pharo3.0 with Moose 5.0, latest update: #30863 The script I use (rostopic) is a python script (does it impact ?) -- ~~Jannik Laval~~ ??cole des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/ -- ~~Jannik Laval~~ Ãcole des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/
Re: [Pharo-dev] OSProcess bug ?
Another possibility is that the program is writing to stderr instead of stdout. Levente On Wed, 25 Feb 2015, David T. Lewis wrote: Hi Jannik, One other thing I just thought of: Check and see if your rostopic program is actually writing to standard output, as opposed to writing directly to /dev/tty. From a terminal window, I think you could do this: $ rostopic out.txt If you run this get output written to the out.txt file, that is good. If you run it and see output to your terminal window, it would mean that the rostopic program was writing directly to /dev/tty (so there would never be any output to read with a PipeableOSProcess). I would not worry about the missing AioPlugin. Your code should still work without the plugin. Dave Hi Dave, 2015-02-25 1:13 GMT+01:00 David T. Lewis le...@mail.msen.com: On Tue, Feb 24, 2015 at 08:33:41PM +0100, jannik laval wrote: Hi pharoers, I am playing with OSProcess. I am using an example, and I am annoyed with a strange bug: Here is the code I want to execute, and does not work: |thread process output| myCmd := 'rostopic bw /turtle1/pose'. thread := [process := (PipeableOSProcess command: myCmd) ] fork. 3 second wait. output := process upToEnd. output inspect. thread terminate. === Hi Jannik, I am not familiar with the rostopic command, but it is common for some Unix programs to flush their output when the stdout is connected to /dev/tty (a terminal), but not necessarily if connected to a pipe or to a file. So it may be that the running rostopic program is producing output, but that the output has not yet been flushed to the pipe connected to your PipeableOSProcess. Thank you for your explanation. So, what I can do is to send a sigint to terminate the process and receive the info. But sending process processProxy sigint. does nothing. By the way I have a warning on the AIOPlugin... Probably I should reinstall my VM. I also try process flush, but it does not do anything. Your #upToEnd call will read the available data from the OS pipe, but it will not read data that was written by the rotopic program, but not yet flushed out to the OSPipe. So I am guessing that this may be why the data seems to be missing. I notice also that you are putting your PipeableOSProcess into a separate Smalltalk process using #fork. This is probably not necessary, so try getting rid of the #fork and the later thread terminate. It will not fix the problem for you, but it will simplify the code. Ok, it is simpler like that. You are right, it does not help :) Thank you for your help. Dave 'rostopic bw /turtle1/pose' is a command that is a loop displaying the current bandwidth of a ROS process. In a terminal, it works fine. With OSProcess the output value is empty. My source code is correct: if I replace myCmd by : myCmd := 'ping localhost'. It is a loop too, and it returns a correct string. I have clearly no idea of where I have to search... Any help or discussion about that would be great :) Thank you, Oups, some infos: I am using Ubuntu 14.04 Pharo3.0 with Moose 5.0, latest update: #30863 The script I use (rostopic) is a python script (does it impact ?) -- ~~Jannik Laval~~ ??cole des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/ -- ~~Jannik Laval~~ Ã?cole des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/
Re: [Pharo-dev] OSProcess bug ?
Hi Dave, 2015-02-25 17:05 GMT+01:00 David T. Lewis le...@mail.msen.com: Hi Jannik, One other thing I just thought of: Check and see if your rostopic program is actually writing to standard output, as opposed to writing directly to /dev/tty. From a terminal window, I think you could do this: $ rostopic out.txt Yes, it writes on the file after a ctrl-c. If you run this get output written to the out.txt file, that is good. If you run it and see output to your terminal window, it would mean that the rostopic program was writing directly to /dev/tty (so there would never be any output to read with a PipeableOSProcess). I would not worry about the missing AioPlugin. Your code should still work without the plugin. Ok, thank you. Jannik Dave Hi Dave, 2015-02-25 1:13 GMT+01:00 David T. Lewis le...@mail.msen.com: On Tue, Feb 24, 2015 at 08:33:41PM +0100, jannik laval wrote: Hi pharoers, I am playing with OSProcess. I am using an example, and I am annoyed with a strange bug: Here is the code I want to execute, and does not work: |thread process output| myCmd := 'rostopic bw /turtle1/pose'. thread := [process := (PipeableOSProcess command: myCmd) ] fork. 3 second wait. output := process upToEnd. output inspect. thread terminate. === Hi Jannik, I am not familiar with the rostopic command, but it is common for some Unix programs to flush their output when the stdout is connected to /dev/tty (a terminal), but not necessarily if connected to a pipe or to a file. So it may be that the running rostopic program is producing output, but that the output has not yet been flushed to the pipe connected to your PipeableOSProcess. Thank you for your explanation. So, what I can do is to send a sigint to terminate the process and receive the info. But sending process processProxy sigint. does nothing. By the way I have a warning on the AIOPlugin... Probably I should reinstall my VM. I also try process flush, but it does not do anything. Your #upToEnd call will read the available data from the OS pipe, but it will not read data that was written by the rotopic program, but not yet flushed out to the OSPipe. So I am guessing that this may be why the data seems to be missing. I notice also that you are putting your PipeableOSProcess into a separate Smalltalk process using #fork. This is probably not necessary, so try getting rid of the #fork and the later thread terminate. It will not fix the problem for you, but it will simplify the code. Ok, it is simpler like that. You are right, it does not help :) Thank you for your help. Dave 'rostopic bw /turtle1/pose' is a command that is a loop displaying the current bandwidth of a ROS process. In a terminal, it works fine. With OSProcess the output value is empty. My source code is correct: if I replace myCmd by : myCmd := 'ping localhost'. It is a loop too, and it returns a correct string. I have clearly no idea of where I have to search... Any help or discussion about that would be great :) Thank you, Oups, some infos: I am using Ubuntu 14.04 Pharo3.0 with Moose 5.0, latest update: #30863 The script I use (rostopic) is a python script (does it impact ?) -- ~~Jannik Laval~~ ??cole des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/ -- ~~Jannik Laval~~ École des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/ -- ~~Jannik Laval~~ École des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/
Re: [Pharo-dev] OSProcess bug ?
Hi Levente, Nop, I catch also stderr, but there is nothing here. Jannik 2015-02-25 17:40 GMT+01:00 Levente Uzonyi le...@elte.hu: Another possibility is that the program is writing to stderr instead of stdout. Levente On Wed, 25 Feb 2015, David T. Lewis wrote: Hi Jannik, One other thing I just thought of: Check and see if your rostopic program is actually writing to standard output, as opposed to writing directly to /dev/tty. From a terminal window, I think you could do this: $ rostopic out.txt If you run this get output written to the out.txt file, that is good. If you run it and see output to your terminal window, it would mean that the rostopic program was writing directly to /dev/tty (so there would never be any output to read with a PipeableOSProcess). I would not worry about the missing AioPlugin. Your code should still work without the plugin. Dave Hi Dave, 2015-02-25 1:13 GMT+01:00 David T. Lewis le...@mail.msen.com: On Tue, Feb 24, 2015 at 08:33:41PM +0100, jannik laval wrote: Hi pharoers, I am playing with OSProcess. I am using an example, and I am annoyed with a strange bug: Here is the code I want to execute, and does not work: |thread process output| myCmd := 'rostopic bw /turtle1/pose'. thread := [process := (PipeableOSProcess command: myCmd) ] fork. 3 second wait. output := process upToEnd. output inspect. thread terminate. === Hi Jannik, I am not familiar with the rostopic command, but it is common for some Unix programs to flush their output when the stdout is connected to /dev/tty (a terminal), but not necessarily if connected to a pipe or to a file. So it may be that the running rostopic program is producing output, but that the output has not yet been flushed to the pipe connected to your PipeableOSProcess. Thank you for your explanation. So, what I can do is to send a sigint to terminate the process and receive the info. But sending process processProxy sigint. does nothing. By the way I have a warning on the AIOPlugin... Probably I should reinstall my VM. I also try process flush, but it does not do anything. Your #upToEnd call will read the available data from the OS pipe, but it will not read data that was written by the rotopic program, but not yet flushed out to the OSPipe. So I am guessing that this may be why the data seems to be missing. I notice also that you are putting your PipeableOSProcess into a separate Smalltalk process using #fork. This is probably not necessary, so try getting rid of the #fork and the later thread terminate. It will not fix the problem for you, but it will simplify the code. Ok, it is simpler like that. You are right, it does not help :) Thank you for your help. Dave 'rostopic bw /turtle1/pose' is a command that is a loop displaying the current bandwidth of a ROS process. In a terminal, it works fine. With OSProcess the output value is empty. My source code is correct: if I replace myCmd by : myCmd := 'ping localhost'. It is a loop too, and it returns a correct string. I have clearly no idea of where I have to search... Any help or discussion about that would be great :) Thank you, Oups, some infos: I am using Ubuntu 14.04 Pharo3.0 with Moose 5.0, latest update: #30863 The script I use (rostopic) is a python script (does it impact ?) -- ~~Jannik Laval~~ ??cole des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/ -- ~~Jannik Laval~~ Ã?cole des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/ -- ~~Jannik Laval~~ École des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/
Re: [Pharo-dev] OSProcess bug ?
Hi Dave, 2015-02-25 1:13 GMT+01:00 David T. Lewis le...@mail.msen.com: On Tue, Feb 24, 2015 at 08:33:41PM +0100, jannik laval wrote: Hi pharoers, I am playing with OSProcess. I am using an example, and I am annoyed with a strange bug: Here is the code I want to execute, and does not work: |thread process output| myCmd := 'rostopic bw /turtle1/pose'. thread := [process := (PipeableOSProcess command: myCmd) ] fork. 3 second wait. output := process upToEnd. output inspect. thread terminate. === Hi Jannik, I am not familiar with the rostopic command, but it is common for some Unix programs to flush their output when the stdout is connected to /dev/tty (a terminal), but not necessarily if connected to a pipe or to a file. So it may be that the running rostopic program is producing output, but that the output has not yet been flushed to the pipe connected to your PipeableOSProcess. Thank you for your explanation. So, what I can do is to send a sigint to terminate the process and receive the info. But sending process processProxy sigint. does nothing. By the way I have a warning on the AIOPlugin... Probably I should reinstall my VM. I also try process flush, but it does not do anything. Your #upToEnd call will read the available data from the OS pipe, but it will not read data that was written by the rotopic program, but not yet flushed out to the OSPipe. So I am guessing that this may be why the data seems to be missing. I notice also that you are putting your PipeableOSProcess into a separate Smalltalk process using #fork. This is probably not necessary, so try getting rid of the #fork and the later thread terminate. It will not fix the problem for you, but it will simplify the code. Ok, it is simpler like that. You are right, it does not help :) Thank you for your help. Dave 'rostopic bw /turtle1/pose' is a command that is a loop displaying the current bandwidth of a ROS process. In a terminal, it works fine. With OSProcess the output value is empty. My source code is correct: if I replace myCmd by : myCmd := 'ping localhost'. It is a loop too, and it returns a correct string. I have clearly no idea of where I have to search... Any help or discussion about that would be great :) Thank you, Oups, some infos: I am using Ubuntu 14.04 Pharo3.0 with Moose 5.0, latest update: #30863 The script I use (rostopic) is a python script (does it impact ?) -- ~~Jannik Laval~~ ??cole des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/ -- ~~Jannik Laval~~ École des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/
Re: [Pharo-dev] OSProcess bug ?
On Tue, Feb 24, 2015 at 08:33:41PM +0100, jannik laval wrote: Hi pharoers, I am playing with OSProcess. I am using an example, and I am annoyed with a strange bug: Here is the code I want to execute, and does not work: |thread process output| myCmd := 'rostopic bw /turtle1/pose'. thread := [process := (PipeableOSProcess command: myCmd) ] fork. 3 second wait. output := process upToEnd. output inspect. thread terminate. === Hi Jannik, I am not familiar with the rostopic command, but it is common for some Unix programs to flush their output when the stdout is connected to /dev/tty (a terminal), but not necessarily if connected to a pipe or to a file. So it may be that the running rostopic program is producing output, but that the output has not yet been flushed to the pipe connected to your PipeableOSProcess. Your #upToEnd call will read the available data from the OS pipe, but it will not read data that was written by the rotopic program, but not yet flushed out to the OSPipe. So I am guessing that this may be why the data seems to be missing. I notice also that you are putting your PipeableOSProcess into a separate Smalltalk process using #fork. This is probably not necessary, so try getting rid of the #fork and the later thread terminate. It will not fix the problem for you, but it will simplify the code. Dave 'rostopic bw /turtle1/pose' is a command that is a loop displaying the current bandwidth of a ROS process. In a terminal, it works fine. With OSProcess the output value is empty. My source code is correct: if I replace myCmd by : myCmd := 'ping localhost'. It is a loop too, and it returns a correct string. I have clearly no idea of where I have to search... Any help or discussion about that would be great :) Thank you, Oups, some infos: I am using Ubuntu 14.04 Pharo3.0 with Moose 5.0, latest update: #30863 The script I use (rostopic) is a python script (does it impact ?) -- ~~Jannik Laval~~ ??cole des Mines de Douai Enseignant-chercheur http://www.jannik-laval.eu http://www.phratch.com http://www.approchealpes.info http://car.mines-douai.fr/