-
Notifications
You must be signed in to change notification settings - Fork 56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
calling setq
in action server callback never returns
#547
Comments
I found a workaround of this problem just by changing (setq *server*
(instance ros::simple-action-server :init
"/fibonacci"
actionlib_tutorials::FibonacciAction
- :execute-cb #'ac-cb)))
+ :execute-cb 'ac-cb))) Do you know the reason? |
related? #251 |
同様の症状が出ました。 action serverは使っていませんが、 setqを使う関数かlambdaに、 simple-action-serverのコード内でも上記と同じ処理をしているので、 jsk_roseus/roseus/euslisp/actionlib.l Line 268 in 35a5042
(funcall execute-cb self goal)が怪しいと思います。 ↓エラーにならない例
結果
↓Segmentation Faultになる例
結果
↓Segmentation Faultになる例
結果
|
以下のテストコードで問題の有り無しがはっきりするかと思います。
ここからはeusの実装の話なのですが、lambdaは以下のような構造の表現で扱われます。
xxとyyはローレベルのポインタを表していて、xxはlet内の変数フレームを表し、 今回はinstance関数がletを使ってマクロで定義されていることが問題です。
上のテストコードのtest-letのように展開されます。
なので、先に評価しておけば、問題ありません。
setqが気持ち悪い場合は、以下のように。let内のfcはfuncallの引数に渡るときに評価が終わっているので問題なし。
|
I created a server written in euslisp:
and called the server:
But the server never return the result.
Is it a bug or a right behavior?
@k-okada @YoheiKakiuchi
(The code for server works if
(setq *init-pos* 1)
is removed.)The text was updated successfully, but these errors were encountered: