Skip to content
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

ros::roseus-add-msgs hangs up if message contains 61 constants #313

Closed
garaemon opened this issue May 13, 2015 · 17 comments
Closed

ros::roseus-add-msgs hangs up if message contains 61 constants #313

garaemon opened this issue May 13, 2015 · 17 comments

Comments

@garaemon
Copy link
Member

roseus cannot handle messages which contains over 61 constants.

https://github.com/garaemon/jsk_roseus/blob/msgs-bag/roseus/msg/String.msg

If you use the message above, ros::roseus-add-msgs "roseus" hangs up.

@garaemon
Copy link
Member Author

https://gist.github.com/garaemon/73b9211513b16acad928
generated roseus/ros/roseus/msg/String.l

@garaemon
Copy link
Member Author

(shadow '*CONST62* (find-package "ROSEUS::STRING")) does not return

@k-okada
Copy link
Member

k-okada commented May 13, 2015

humm, simplest test code is -> https://gist.github.com/k-okada/eba5c9f10c63b0abb4bb
i'll look into it

@k-okada
Copy link
Member

k-okada commented May 13, 2015

@garaemon
Copy link
Member Author

I'd like to increase it to 256 at least

@k-okada
Copy link
Member

k-okada commented May 13, 2015

it seems there are a way to extend symbol vector

64.eusgl$ make-package "hoge"
#<package #X6829728 hoge>
65.eusgl$ (length ((find-package "hoge") . intsymvector))
60
66.eusgl$ (length ((find-package "GEO") . intsymvector))
1828
67.eusgl$ (length ((find-package "USER") . intsymvector))
163

@k-okada
Copy link
Member

k-okada commented May 13, 2015

(dotimes (i 100)
  (eval `(defconstant ,(intern (format nil "*CONST~d*" i)) i))))
(make-package "TEST1")
(dotimes (i 100)
  (eval `(defconstant ,(intern (format nil "TEST1::*CONST~d*" i)) i)))
(make-package "TEST2")
(dotimes (i 100)
  (catch 'error
    (labels ((error (&rest args) (apply #'format *error-output* args)(format *error-output* "~%")(throw 'error nil)))
      (shadow (intern (format nil "*CONST~d*" i)) (find-package "TEST2"))
      (eval `(defconstant ,(intern (format nil "TEST2::*CONST~d*" i)) i)))))
(make-package "TEST3")
(dotimes (i 100)
  (intern (format nil "*CONST~d*" i) (find-package "TEST3"))
  (shadow (intern (format nil "*CONST~d*" i)) (find-package "TEST3"))
  (eval `(defconstant ,(intern (format nil "TEST3::*CONST~d*" i)) i)))

@k-okada
Copy link
Member

k-okada commented May 13, 2015

please try

wget https://gist.githubusercontent.com/k-okada/b37a76caf73fd158cb80/raw/e67a0a2e56dd29f25c513e8e47e8e01ec882a228/gistfile1.txt -O - | bash

to fix this problem

@k-okada
Copy link
Member

k-okada commented May 13, 2015

if you merge and recompile everything, you'll get same result jsk-ros-pkg/geneus#31

@k-okada
Copy link
Member

k-okada commented May 13, 2015

BTW, which message has such a huge const variable? each message has it'own package (not package, not roseus) and internal symbol table size is defined for each message.

@garaemon
Copy link
Member Author

@k-okada
Copy link
Member

k-okada commented May 13, 2015

I see...

@mmurooka
Copy link
Member

I added 61th constant variable to this message file, and met this error.

I reverted and removed DOOR_DRC_LASVEGAS constant variable in jsk-ros-pkg/jsk_demos#656...

@k-okada
Copy link
Member

k-okada commented May 13, 2015

you don't have to revert that, please add new variable and try
#313 (comment)

if this works, i'll merge jsk-ros-pkg/geneus#31 and if you update geneus, everything should working fine.

k-okada added a commit to jsk-ros-pkg/geneus that referenced this issue May 14, 2015
[src/geneus/generate.py] make intern before shadow, see jsk-ros-pkg/jsk_roseus#313
@k-okada
Copy link
Member

k-okada commented May 14, 2015

also fixed in message generation level jsk-ros-pkg/geneus#31

@mmurooka
Copy link
Member

遅くなりましたが確認してなおりました。ありがとうございます。
closeしていただいて大丈夫です。

@k-okada k-okada closed this as completed May 15, 2015
@mmurooka
Copy link
Member

必要最小限かは分からないですが、
以下で更新が反映されて直ります。
drc_task_commonを最新にしたPCでは必ず必要です。

roscd geneus
git pull
source /opt/ros/hydro/setup.bash
catkin bt --start-with-this
source ~/.bashrc
roscd
rm -rf share/roseus/ros/drc_com_common/
roscd drc_com_common
catkin bt --start-with-this --force-cmake

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants