JuliaPy / JuliaPy/PythonCall.jl

juliacall: Can not use `@show` and `println` in the callback function of ros.py

Open
#484 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Julia
Stars
1.1k
Forks
86
Avg merge
1d 22h
Merged PRs (30d)
3

Description

**Affects:** JuliaCall

**Describe the bug**
When I use `@show` and `println` in the julia function which is called by the callback function of ros.py, the program becomes unresponsive.

Python `test.py`:
```python
#!/usr/bin/env python3
#coding: utf-8

import rospy
import time
import numpy as np
from std_msgs.msg import Char

from juliacall import Main as jl

def solve(data):
rospy.loginfo("==================== Start ... ======================")

xs = jl.call_ext()

print("len(xs) = ", len(xs))

def Solver_Interface():
rospy.init_node('solver_interface', anonymous = True)

rospy.Subscriber('test', Char, solve, queue_size=1) # can not callback successfully.

jl.include("./test.jl")

time.sleep(1.0)
solve(None) # can call successfully.

rospy.spin()

Solver_Interface()

```

Julia `test.jl`:
```julia
function call_ext()

@show "Hello"
@show "World"
return [1,2,3]
end
```

Run the Python `python test.py` in a terminal.
Run `rostopic pub /test std_msgs/Char "data: 0"` in a new terminal to do ros subscriber's callback.
The text printed in the terminal is:
```
$ python test.py
[INFO] [1711030056.700593]: ==================== Start ... ======================
"Hello" = "Hello"
"World" = "World"
len(xs) = 3
[INFO] [1711030086.854242]: ==================== Start ... ======================
"Hello" =
```
Finally, `Hello` is not printed completely, the this terminal becomes unresponsive.

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the callback behavior with the provided test.py and test.jl, first comparing the direct solve(None) call with the rospy subscriber callback. Trace how output from the Julia call is handled in the callback, and consider the issue done when @show/println output completes and the callback returns without making the terminal unresponsive.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia, python
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.