lcm-proj / lcm Goto Github PK
View Code? Open in Web Editor NEWLightweight Communications and Marshalling
License: GNU Lesser General Public License v2.1
Lightweight Communications and Marshalling
License: GNU Lesser General Public License v2.1
When passing a filter argument (-f
) to lcm-logplayer-gui
, the argument is ignored if a .jlp
file exists. The file is specifying which channels should be active, but the command line argument is as well. I think that the command line argument should take precedence, since it's more likely that the user will be setting it on purpose.
The LCM module fails to import in Python 3.x due to a missing define in pylcm.c:
Python 3.4.1 (default, Nov 3 2014, 14:38:10)
[GCC 4.9.1 20140930 (Red Hat 4.9.1-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
import lcm
Traceback (most recent call last):
File "", line 1, in
File "~/.local/lib64/python3.4/site-packages/lcm/init.py", line 3, in
from ._lcm import LCM, LCMSubscription
ImportError: ~/.local/lib64/python3.4/site-packages/lcm/_lcm.so: undefined symbol: PyInt_AsLong
Following change in pylcm.c works for me:
if PY_MAJOR_VERSION >= 3
#define PyInt_FromLong PyLong_FromLong **#define PyInt_AsLong PyLong_AsLong**
endif
A very common pattern that is to have classes define a method that will return the state of the class in an lcm msg publishing over LCM.
class Foo {
foo_t GetLcmtype();
};
where foo_t is the lcmtype for class Foo.
With the current bindings, the following results in an error, because we're trying to take the address of a temporary.
lcm->publish(channel, &foo.GetLcmtype());
Instead you have to create a local variable and then pass in a pointer to the local variable which is useless boiler plate.
foo_t foo_msg = foo.GetLcmtype();
lcm->publish(channel, &foo_msg);
If publish took a const reference argument, the following would be valid code:
lcm->publish(channel, foo.GetLcmtype());
lcm::Publish() probably should have taken a const reference to begin with, but I don't think its worth breaking backwards compatibility hence the overload.
I am getting the message:
LCM: Unknown URL protocol: file
when using the DotNet LCM (1.3.0) under windows 7.
UDP messages work fine. new LCM.LCM.LCM();
What did I do wrong here:
String lcmFilePath = "file:///G:/Data/LCM-Files/lcmlog-2015-11-19.01.lcm?speed=0";
LCM.LCM.LCM myLCM = new LCM.LCM.LCM(lcmFilePath);
Does lcmCreate() with file not work under windows?
lcm_t* lcm_create(const char * provider)
see: https://lcm-proj.github.io/group__LcmC__lcm__t.html#gaf29963ef43edadf45296d5ad82c18d4b
I'm getting the following java.lang.NoClassDefFoundError[s] when I run lcm-spy with a custom plugin. How can I fix these?
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
ClassDiscoverer: java.lang.NoClassDefFoundError: apple/laf/AquaPopupMenuUI
jar: /usr/local/share/java/lcm.jar
class: com/jidesoft/plaf/aqua/AquaJidePopupMenuUI.class
ClassDiscoverer: java.lang.NoClassDefFoundError: org/apache/commons/io/output/ByteArrayOutputStream
jar: /usr/local/share/java/lcm.jar
class: org/apache/xmlgraphics/xmp/XMPPacketParser.class
ClassDiscoverer: java.lang.NoClassDefFoundError: org/apache/commons/io/output/ByteArrayOutputStream
jar: /usr/local/share/java/lcm.jar
class: org/apache/xmlgraphics/image/loader/impl/ImageConverterRendered2PNG.class
ClassDiscoverer: java.lang.NoClassDefFoundError: apple/laf/AquaPopupMenuUI
jar: /usr/local/share/java/lcm.jar
class: com/jidesoft/plaf/aqua/AquaJidePopupMenuUI.class
ClassDiscoverer: java.lang.NoClassDefFoundError: org/apache/commons/io/output/ByteArrayOutputStream
jar: /usr/local/share/java/lcm.jar
class: org/apache/xmlgraphics/xmp/XMPPacketParser.class
ClassDiscoverer: java.lang.NoClassDefFoundError: org/apache/commons/io/output/ByteArrayOutputStream
jar: /usr/local/share/java/lcm.jar
class: org/apache/xmlgraphics/image/loader/impl/ImageConverterRendered2PNG.class
Found 4 LCM types
LCM: Disabling IPV6 support
LCM: TTL set to 1.
ClassDiscoverer: java.lang.NoClassDefFoundError: apple/laf/AquaPopupMenuUI
jar: /usr/local/share/java/lcm.jar
class: com/jidesoft/plaf/aqua/AquaJidePopupMenuUI.class
ClassDiscoverer: java.lang.NoClassDefFoundError: apple/laf/AquaPopupMenuUI
jar: /usr/local/share/java/lcm.jar
class: com/jidesoft/plaf/aqua/AquaJidePopupMenuUI.class
I found that the log seek functionality only works on LCM file sizes up to ~2GB. If the file is larger than this seek() fails for some reason. It wasn't immediately clear why this is occurring by looking at the code. I am using a 32-bit Linux system, it may have something to do with this.
log.seek((1<<31)-1)
print log.tell()
2147483647L
log.seek((1<<31))
print log.tell()
2147483647L
We have been using LCM in C# with Unity. When running over wireless it works fine, over Ethernet connections it fails to receive or broadcast.
CC emit_cpp.o
emit_cpp.c: In function ‘emit_header_start’:
emit_cpp.c:306:19: warning: implicit declaration of function ‘_exit’ [-Wimplicit-function-declaration]
_exit(1);
^
emit_cpp.c:306:19: warning: incompatible implicit declaration of built-in function ‘_exit’ [enabled by default]
I am having a strange error where lcm-logplayer-gui seems to be ignoring messages from a log file I generated programatically. I created a log file by merging two different logs. I made sure the log timestamps are monotonically increasing when writing to the file. I am assuming the event number is populated correctly by the log write, this seems to be the case.
I am able to see the log events when I use a lcm.EventLog to read my merged file. Also lcm-logplayer seems to work strangely enough. Any ideas why lcm-logplayer-gui would not publish certain messages?
Hi, I encountered this issue that when invoke LCM.Close(), the function halts forever. I think similar issue was brought up in lcm-java and it was fixed in the java version. Yet in the dotnet version it still exists. Since dotnet thread doesn't have similar isInterrupted() functionality, I made following changes and it seemed work. I attached the patch here. Hope it might help :)
Newer glib/gthread versions lead to 132 -Wdeprecated-declarations warnings on the mutex API.
admin@arm:~/lcm$ make -C lcm CFLAGS="-fPIC"
make: Entering directory `/home/admin/lcm/lcm'
CC lcm.lo
lcm.c: In function 'lcm_create':
lcm.c:61:5: warning: 'g_thread_init' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:261) [-Wdeprecated-declarations]
if (!g_thread_supported ()) g_thread_init (NULL);
^
lcm.c:126:5: warning: 'g_static_rec_mutex_init' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:172): Use 'g_rec_mutex_init' instead [-Wdeprecated-declarations]
g_static_rec_mutex_init (&lcm->mutex);
^
lcm.c:127:5: warning: 'g_static_rec_mutex_init' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:172): Use 'g_rec_mutex_init' instead [-Wdeprecated-declarations]
g_static_rec_mutex_init (&lcm->handle_mutex);
^
lcm.c: In function 'lcm_destroy':
lcm.c:201:5: warning: 'g_static_rec_mutex_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:191): Use 'g_rec_mutex_free' instead [-Wdeprecated-declarations]
g_static_rec_mutex_free (&lcm->mutex);
^
lcm.c: In function 'lcm_handle':
lcm.c:213:9: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->handle_mutex);
^
lcm.c:218:9: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->handle_mutex);
^
lcm.c: In function 'lcm_subscribe':
lcm.c:334:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm.c:337:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm.c: In function 'lcm_unsubscribe':
lcm.c:345:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm.c:363:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm.c: In function 'lcm_get_handlers':
lcm.c:373:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm.c:392:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm.c: In function 'lcm_try_enqueue_message':
lcm.c:399:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm.c:410:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm.c: In function 'lcm_has_handlers':
lcm.c:418:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm.c:422:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm.c: In function 'lcm_dispatch_handlers':
lcm.c:429:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm.c:449:13: warning: 'g_static_rec_mutex_unlock_full' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:188) [-Wdeprecated-declarations]
int depth = g_static_rec_mutex_unlock_full (&lcm->mutex);
^
lcm.c:451:13: warning: 'g_static_rec_mutex_lock_full' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:184) [-Wdeprecated-declarations]
g_static_rec_mutex_lock_full (&lcm->mutex, depth);
^
lcm.c:471:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm.c: In function 'lcm_subscription_set_queue_capacity':
lcm.c:526:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock(&subs->lcm->mutex);
^
lcm.c:528:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock(&subs->lcm->mutex);
^
CC lcm_udpm.lo
lcm_udpm.c: In function 'lcm_udpm_destroy':
lcm_udpm.c:178:5: warning: 'g_static_rec_mutex_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:191): Use 'g_rec_mutex_free' instead [-Wdeprecated-declarations]
g_static_rec_mutex_free (&lcm->mutex);
^
lcm_udpm.c:179:5: warning: 'g_static_mutex_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:148): Use 'g_mutex_clear' instead [-Wdeprecated-declarations]
g_static_mutex_free (&lcm->transmit_lock);
^
lcm_udpm.c:181:9: warning: 'g_mutex_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:275) [-Wdeprecated-declarations]
g_mutex_free(lcm->create_read_thread_mutex);
^
lcm_udpm.c:182:9: warning: 'g_cond_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:279) [-Wdeprecated-declarations]
g_cond_free(lcm->create_read_thread_cond);
^
lcm_udpm.c: In function '_recv_message_fragment':
lcm_udpm.c:341:9: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm_udpm.c:343:9: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm_udpm.c: In function 'udp_read_packet':
lcm_udpm.c:470:13: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm_udpm.c:472:13: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm_udpm.c:545:9: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm_udpm.c:547:9: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm_udpm.c: In function 'recv_thread':
lcm_udpm.c:576:9: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm_udpm.c:585:9: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm_udpm.c: In function 'lcm_udpm_publish':
lcm_udpm.c:621:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock (&lcm->transmit_lock);
^
lcm_udpm.c:652:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock (&lcm->transmit_lock);
^
lcm_udpm.c:671:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock (&lcm->transmit_lock);
^
lcm_udpm.c:741:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock (&lcm->transmit_lock);
^
lcm_udpm.c: In function 'lcm_udpm_handle':
lcm_udpm.c:768:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm_udpm.c:774:9: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm_udpm.c:783:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm_udpm.c:800:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock (&lcm->mutex);
^
lcm_udpm.c:803:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock (&lcm->mutex);
^
lcm_udpm.c: In function '_setup_recv_parts':
lcm_udpm.c:876:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock(&lcm->mutex);
^
lcm_udpm.c:884:9: warning: 'g_static_private_get' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:247): Use 'g_private_get' instead [-Wdeprecated-declarations]
if(g_static_private_get(&CREATE_READ_THREAD_PKEY)) {
^
lcm_udpm.c:885:13: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock(&lcm->mutex);
^
lcm_udpm.c:891:9: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock(&lcm->mutex);
^
lcm_udpm.c:898:9: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock(&lcm->mutex);
^
lcm_udpm.c:903:9: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock(&lcm->mutex);
^
lcm_udpm.c:906:9: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock(&lcm->mutex);
^
lcm_udpm.c:912:5: warning: 'g_mutex_new' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:273) [-Wdeprecated-declarations]
lcm->create_read_thread_mutex = g_mutex_new();
^
lcm_udpm.c:913:5: warning: 'g_cond_new' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:277) [-Wdeprecated-declarations]
lcm->create_read_thread_cond = g_cond_new();
^
lcm_udpm.c:915:5: warning: 'g_static_private_set' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:250): Use 'g_private_set' instead [-Wdeprecated-declarations]
g_static_private_set(&CREATE_READ_THREAD_PKEY, GINT_TO_POINTER(1), NULL);
^
lcm_udpm.c:1046:5: warning: 'g_thread_create' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:100): Use 'g_thread_new' instead [-Wdeprecated-declarations]
lcm->read_thread = g_thread_create (recv_thread, lcm, TRUE, NULL);
^
lcm_udpm.c:1052:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock(&lcm->mutex);
^
lcm_udpm.c:1057:5: warning: 'g_static_rec_mutex_lock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:175): Use 'g_rec_mutex_lock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_lock(&lcm->mutex);
^
lcm_udpm.c:1073:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock(&lcm->mutex);
^
lcm_udpm.c:1079:5: warning: 'g_static_rec_mutex_unlock' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:181): Use 'g_rec_mutex_unlock' instead [-Wdeprecated-declarations]
g_static_rec_mutex_unlock(&lcm->mutex);
^
lcm_udpm.c: In function 'lcm_udpm_create':
lcm_udpm.c:1122:5: warning: 'g_static_rec_mutex_init' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:172): Use 'g_rec_mutex_init' instead [-Wdeprecated-declarations]
g_static_rec_mutex_init (&lcm->mutex);
^
lcm_udpm.c:1123:5: warning: 'g_static_mutex_init' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:146): Use 'g_mutex_init' instead [-Wdeprecated-declarations]
g_static_mutex_init (&lcm->transmit_lock);
^
CC lcm_file.lo
lcm_file.c: In function 'lcm_logprov_create':
lcm_file.c:230:9: warning: 'g_thread_create' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:100): Use 'g_thread_new' instead [-Wdeprecated-declarations]
lr->timer_thread = g_thread_create (timer_thread, lr, TRUE, NULL);
^
CC lcm_memq.lo
lcm_memq.c: In function 'lcm_memq_destroy':
lcm_memq.c:61:5: warning: 'g_mutex_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:275) [-Wdeprecated-declarations]
g_mutex_free(self->mutex);
^
lcm_memq.c: In function 'lcm_memq_create':
lcm_memq.c:80:5: warning: 'g_mutex_new' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:273) [-Wdeprecated-declarations]
self->mutex = g_mutex_new();
^
CC lcm_mpudpm.lo
lcm_mpudpm.c: In function 'lcm_mpudpm_destroy':
lcm_mpudpm.c:297:5: warning: 'g_static_mutex_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:148): Use 'g_mutex_clear' instead [-Wdeprecated-declarations]
g_static_mutex_free (&lcm->receive_lock);
^
lcm_mpudpm.c:298:5: warning: 'g_static_mutex_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:148): Use 'g_mutex_clear' instead [-Wdeprecated-declarations]
g_static_mutex_free (&lcm->transmit_lock);
^
lcm_mpudpm.c:300:9: warning: 'g_mutex_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:275) [-Wdeprecated-declarations]
g_mutex_free(lcm->create_read_thread_mutex);
^
lcm_mpudpm.c:301:9: warning: 'g_cond_free' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:279) [-Wdeprecated-declarations]
g_cond_free(lcm->create_read_thread_cond);
^
lcm_mpudpm.c: In function 'recv_message_fragment':
lcm_mpudpm.c:507:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:509:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c: In function 'dispatch_complete_message':
lcm_mpudpm.c:573:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->transmit_lock);
^
lcm_mpudpm.c:575:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->transmit_lock);
^
lcm_mpudpm.c:597:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:600:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:603:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:623:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c: In function 'recv_thread':
lcm_mpudpm.c:645:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:665:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:701:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:705:13: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:735:17: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:827:17: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:833:13: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:840:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c: In function 'lcm_mpudpm_subscribe':
lcm_mpudpm.c:889:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->transmit_lock);
^
lcm_mpudpm.c:892:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->transmit_lock);
^
lcm_mpudpm.c:896:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->transmit_lock);
^
lcm_mpudpm.c:913:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->transmit_lock);
^
lcm_mpudpm.c:915:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:917:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:921:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:923:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c: In function 'lcm_mpudpm_unsubscribe':
lcm_mpudpm.c:934:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:949:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:968:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c: In function 'channel_port_mapping_update_handler':
lcm_mpudpm.c:1034:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->transmit_lock);
^
lcm_mpudpm.c:1062:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->transmit_lock);
^
lcm_mpudpm.c: In function 'update_subscription_ports':
lcm_mpudpm.c:1103:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:1104:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock (&lcm->transmit_lock);
^
lcm_mpudpm.c:1136:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock (&lcm->transmit_lock);
^
lcm_mpudpm.c:1137:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c: In function 'publish_message_internal':
lcm_mpudpm.c:1160:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->transmit_lock);
^
lcm_mpudpm.c:1162:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->transmit_lock);
^
lcm_mpudpm.c: In function 'lcm_mpudpm_publish':
lcm_mpudpm.c:1313:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->transmit_lock);
^
lcm_mpudpm.c:1315:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->transmit_lock);
^
lcm_mpudpm.c: In function 'lcm_mpudpm_handle':
lcm_mpudpm.c:1341:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock (&lcm->receive_lock);
^
lcm_mpudpm.c:1347:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock (&lcm->receive_lock);
^
lcm_mpudpm.c:1356:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock (&lcm->receive_lock);
^
lcm_mpudpm.c:1373:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock (&lcm->receive_lock);
^
lcm_mpudpm.c:1376:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock (&lcm->receive_lock);
^
lcm_mpudpm.c: In function 'mpudpm_self_test':
lcm_mpudpm.c:1399:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->transmit_lock);
^
lcm_mpudpm.c:1402:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->transmit_lock);
^
lcm_mpudpm.c:1427:13: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->transmit_lock);
^
lcm_mpudpm.c:1430:13: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->transmit_lock);
^
lcm_mpudpm.c: In function 'setup_recv_parts':
lcm_mpudpm.c:1588:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:1596:9: warning: 'g_static_private_get' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:247): Use 'g_private_get' instead [-Wdeprecated-declarations]
if(g_static_private_get(&CREATE_READ_THREAD_PKEY)) {
^
lcm_mpudpm.c:1597:13: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:1603:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:1611:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:1616:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:1619:9: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:1625:5: warning: 'g_mutex_new' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:273) [-Wdeprecated-declarations]
lcm->create_read_thread_mutex = g_mutex_new();
^
lcm_mpudpm.c:1626:5: warning: 'g_cond_new' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:277) [-Wdeprecated-declarations]
lcm->create_read_thread_cond = g_cond_new();
^
lcm_mpudpm.c:1629:5: warning: 'g_static_private_set' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:250): Use 'g_private_set' instead [-Wdeprecated-declarations]
g_static_private_set(&CREATE_READ_THREAD_PKEY, GINT_TO_POINTER(1), NULL);
^
lcm_mpudpm.c:1656:5: warning: 'g_thread_create' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:100): Use 'g_thread_new' instead [-Wdeprecated-declarations]
lcm->read_thread = g_thread_create (recv_thread, lcm, TRUE, NULL);
^
lcm_mpudpm.c:1678:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:1683:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->receive_lock);
^
lcm_mpudpm.c:1699:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c:1702:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_lock(&lcm->transmit_lock);
^
lcm_mpudpm.c:1704:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->transmit_lock);
^
lcm_mpudpm.c:1711:5: warning: 'g_static_mutex_get_mutex_impl' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:150): Use 'GMutex' instead [-Wdeprecated-declarations]
g_static_mutex_unlock(&lcm->receive_lock);
^
lcm_mpudpm.c: In function 'lcm_mpudpm_create':
lcm_mpudpm.c:1755:5: warning: 'g_static_mutex_init' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:146): Use 'g_mutex_init' instead [-Wdeprecated-declarations]
g_static_mutex_init (&lcm->receive_lock);
^
lcm_mpudpm.c:1756:5: warning: 'g_static_mutex_init' is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:146): Use 'g_mutex_init' instead [-Wdeprecated-declarations]
g_static_mutex_init (&lcm->transmit_lock);
^
CC lcm_tcpq.lo
CC ringbuffer.lo
CC udpm_util.lo
CC eventlog.lo
CC lcmtypes/channel_to_port_t.lo
CC lcmtypes/channel_port_map_update_t.lo
CCLD liblcm.la
make: Leaving directory `/home/admin/lcm/lcm'
admin@arm:~/lcm$
In order to install V1.3.1 LCM on an Ubuntu distribution I performed the following:
sudo apt-get install build-essential libglib2.0-dev python-dev
git clone https://github.com/lcm-proj/lcm.git
git checkout -b v1.3.1
cd lcm/
./bootstrap.sh
./configure
make
sudo make install
This failed at './bootstrap.sh' because it was complaining about autoconf. I don't have much experience with these tools but after I installed 'autoconf' and 'libtool' the entire build worked.
So replacing
apt-get install build-essential libglib2.0-dev python-dev
With
apt-get install build-essential libglib2.0-dev python-dev autoconf libtool
Seemed to fix the issue
In lcm.c there is if (!g_thread_supported ()) g_thread_init (NULL);
Since g_thread_supported
is defined to 1
, function g_thread_init
is never called and removed by the optimizing compiler. It anyway would do nothing, since in gthread-impl.c it is:
void g_thread_init (gpointer init) {
if (init != NULL)
g_warning ("GThread system no longer supports custom thread implementations.");
}
Therefore the dependency on gthread-2.0 can be removed.
So I'm using lcmlite and the deliver_packet method in lcmlite.c (line 64) appears to parse the channel name by skipping every other letter. (there are two pos++ in the loop).
I'm not sure if this is for efficiency or a bug, but when i get received message, the channel match fails because it skips past the last character, doesn't match, and fails to receive it.
Either way, I'm just wondering if this is a bug or if I'm using the implementation wrong.
Using lcm-1.2.1.
Thanks
Hey,
I've been using (and liking) your code but I think there is a little mistake in:
file lcm/lcm_udpm.c
line 195
"if (inet_aton (words[0], (struct in_addr*) ¶ms->mc_addr) < 0) {"
From the man page as well as from personal tests it seems that inet_aton returns 0 for a fail and 1 for a success (man says "non-zero", my tests show 1). So the check is actually never performed and the error message never issued.
Please let me know if you disagree, or how I can help to fix it.
Regards,
C
Hi all,
I'm currently working to implement IPC between Real time (with Xenomai) and Non-Real time threads in C++ for my robot.
When called from within the real time thread, all the LCM calls (especially publish) are breaking the real time.
Have you ever implemented real-time safe LCM calls? Something like this for ROS.
On my side I've already tried few things such as:
From RT to non-RT, I tried to convert the messages into binary blobs, send them trough a Xenomai pipe, get the blob on the non-RT side and publish it to LCM, but even the encode
function is breaking the realtime.
An idea of what I tried is as follows:
void* buf = malloc(joint_state_msg_.getEncodedSize());
joint_state_msg_.encode(buf, 0, joint_state_msg_.getEncodedSize());
int ret = sendto(joint_state_socket, buf, joint_state_msg_.getEncodedSize(), 0, NULL, 0);
free(buf);
From non-RT to RT, I tried to run a non-RT thread with associated LCM callback that writes on the Xenomai pipe, as follows:
// get message from LCM and pass it to RT servo through Xenomai pipe
void* buf = malloc(msg->getEncodedSize());
msg->encode(buf, 0, msg->getEncodedSize());
int ret = write(pronto_fd, buf, msg->getEncodedSize());
if(ret < 0) {
std::cerr << "ERROR: write on Xenomai pipe failed" << std::endl;
}
free(buf);
An example of how a Xenomai pipe works is here.
Notice that Xenomai pipes are nothing more than file descriptors and sockets.
I will try to provide a minimal compilable example in the next few days, if you are interested in the issue.
Has to do with when the sparkline is updated, which happens on draw, which happens on mouse-over.
We build Drake using LCM, currently v1.2.1. When building in Visual Studio 2015 Win64, we get a large number of warnings, apparently due to LCM mixing int
and size_t
which are different sizes when compiling 64 bit. While these may be harmless as written, they are correctly identifying a problem, and the large number of warnings makes it hard to see more important problems. It would be great to see this build cleanly on Win64!
Typical warnings look like this:
c:\users\sherm\documents\github\robotlocomotion\drake-build\install\include\lcm\lcm-cpp-impl.hpp(134):
warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data [C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\examples\Cars\carSimLCM.vcxproj]
21>c:\users\sherm\documents\github\robotlocomotion\drake-build\install\include\lcm\lcm-cpp-impl.hpp(353):
warning C4267: '=': conversion from 'size_t' to 'int32_t', possible loss of data [C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\examples\Cars\carSimLCM.vcxproj]
21>C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\install\include\lcm/lcm_coretypes.h(397):
warning C4267: '+=': conversion from 'size_t' to 'int', possible loss of data [C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\examples\Cars\carSimLCM.vcxproj]
21>C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\install\include\lcm/lcm_coretypes.h(413):
warning C4267: 'initializing': conversion from 'size_t' to 'int32_t', possible loss of data [C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\examples\Cars\carSimLCM.vcxproj]
21>C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\lcmgen\lcmtypes/drake/lcmt_drake_signal.hpp(180):
warning C4267: '+=': conversion from 'size_t' to 'int', possible loss of data [C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\examples\Cars\carSimLCM.vcxproj]
21>C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\lcmgen\lcmtypes\drake\lcmt_viewer_geometry_data.hpp(227):
warning C4267: '+=': conversion from 'size_t' to 'int', possible loss of data [C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\examples\Cars\carSimLCM.vcxproj]
21>C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\lcmgen\lcmtypes\drake\lcmt_viewer_link_data.hpp(173):
warning C4267: '+=': conversion from 'size_t' to 'int', possible loss of data [C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\examples\Cars\carSimLCM.vcxproj]
21>C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\lcmgen\lcmtypes/drake/lcmt_viewer_draw.hpp(212):
warning C4267: '+=': conversion from 'size_t' to 'int', possible loss of data [C:\Users\Sherm\Documents\GitHub\RobotLocomotion\drake-build\drake\examples\Cars\carSimLCM.vcxproj]
Running on on Mac OS X Yosemite. The firewall is off under System Preferences/Security & Privacy
Is there a network configuration step that is needed?
./listener
LCM self test failed!!
Check your routing tables and firewall settings
LCM self test failed!!
Check your routing tables and firewall settings
I try to use the file description in Qt. But when I send a message to the upd multicast, the program didn't run the intteruptLcm().
codes:
int lcmFd = lcm.getFileno();
m_notifierLcm = new QSocketNotifier(lcmFd, QSocketNotifier::Read, this);
connect(m_notifierLcm, SIGNAL(activated(int)), this, SLOT(interruptLcm()));
void interruptLcm()
{
qDebug("[OK] received a message!");
}
Here is the error:
LC singleton fail: java.net.SocketException: Can't assign requested address
It is caused by the network interface returning an IPv6 IP address. One workaround is to use the -Djava.net.preferIPv4Stack=true
flag in the java.opts
file or as a JVM command line parameter. However, it would be nice if LCM could be modified to support the situation where the host computer reports an IPv6 address. For example, if outright support of IPv6 is not possible, maybe the exception could be caught and logic be added to try to get the local IPv4 address if it is available?
Related:
The rockspec
provides an alternative way to install the LCM Lua binding using LuaRocks. It's currently not working, and otherwise out of date. The LUAROCKS_INSTALL
instructions will need to be updated, too.
Hello,
In a separate fork, I have a commit for an option to use Lua strings to represent an array of bytes, rather than a table of numbers. A command line option of "lbytestring" (via getopt_add_bool) to lcm-gen is used to enable this representation of a byte array (byte[n]).
This is useful in the case of large byte arrays, where a large table of numbers would exceed the available stack space. The new optional Lua code would perform a data:read() with no processing. The relevant commit can be found below (I apologize the for the white space changes polluting the commit).
I believe this would be a useful feature, if not the default setting for emitting Lua code. Thanks for taking a look. Please let me know your thoughts!
Sincerely,
Steve McGill
Hi,
I got the lcm files and did both make install and python install in the lcm-python folder.
Both run smoothly.
The issue is that by default I am using the native python in my Mac and LCM seems to have been installed for a different version of python within my computer.
How can I install LCM for the default python?
Thank you for your help,
Javier
Details.
$ which python
/usr/local/bin/python
$ python
can not find module lcm if i try to import it
$ cd /usr/local/lib/python2.7/site-packages/
$ python
successful import lcm
From Carlos Galvez message to lcm-users
Hi,
I have created some .lcm files that have no "package _______;" inside them. The generated C and C++ encoders/decoders work just fine in my application.
Now I want to generate Python code as well using the same .lcm files. I am pretty much a Python beginner. However I have realized that:
struct type1
{
double x;
}
struct type2
{
type1 x;
float y;
}
The generated code for type2.py has the following syntax error in _get_hash_recursive():
tmphash = (0x9d6e135c72517403+ .type1._get_hash_recursive(newparents)) & 0xffffffffffffffff
^
If I write "package exlcm;", I then get a correct syntax:
tmphash = (0x9d6e135c72517403+ exlcm.type1._get_hash_recursive(newparents)) & 0xffffffffffffffff
In addition, I don't understand why sometimes methods from type1 are called without using the module name. For example in _decode_one, it's used:
self.x = type1._decode_one(buf)
instead of
self.x = exlcm.type1._decode_one(buf)
Could you clarify why this is possible?
Is there a way to make the Python code work without using a package? Will this be fixed in future releases?
Thanks!
Running lcm-logplayer-gui, I now get the following error:
$ lcm-logplayer-gui lcm.log
/usr/local/bin/lcm-logplayer-gui: 3: /usr/local/bin/lcm-logplayer-gui: Bad substitution
Unable to find 'lcm.jar'; please check your installation
@mwoehlke-kitware it looks like you added some bash-isms to lcm-logplayer-gui and left it at #!/bin/sh
?
@rdeits reports this issue over on the Drake project. Cross posting here for visibility.
Perhaps we can write a minimal c++ program that demonstrates the issue.
The current error handling is done by printing to stderr or calling perror function, which also prints to the console window. For GUI applications where no console is available these error messages are simply hidden and make debugging really a pain. Therefore, it would be nice if a custom error handler could be added, such that error or debug messages can be caught and application-dependent dealt with. The default error handler would just be the current behavior for backwards-compatibility.
Everything works up to sudo make install
where I get this error (using version 1.2.0):
make[1]: Leaving directory `/home/abarry/downloads/lcm-1.2.0/lcm-java'
Making install in lcm-python
make[1]: Entering directory `/home/abarry/downloads/lcm-1.2.0/lcm-python'
make[2]: Entering directory `/home/abarry/downloads/lcm-1.2.0/lcm-python'
/bin/mkdir -p '/usr/local/lib/python2.7/dist-packages/lcm'
/bin/bash ../libtool --mode=install /usr/bin/install -c _lcm.la '/usr/local/lib/python2.7/dist-packages/lcm'
libtool: install: warning: relinking `_lcm.la'
libtool: install: (cd /home/albert/proj/lcm/lcm-1.2.0/lcm-python; /bin/bash /home/albert/proj/lcm/lcm-1.2.0/libtool --silent --tag CC --mode=relink gcc -I.. -g -O2 -module -avoid-version -o _lcm.la -rpath /usr/local/lib/python2.7/dist-packages/lcm _lcm_la-module.lo _lcm_la-pyeventlog.lo _lcm_la-pylcm.lo _lcm_la-pylcm_subscription.lo ../lcm/liblcm.la )
../libtool: line 1085: cd: /home/albert/proj/lcm/lcm-1.2.0/lcm-python: No such file or directory
/bin/bash: /home/albert/proj/lcm/lcm-1.2.0/libtool: No such file or directory
libtool: install: error: relink `_lcm.la' with the above command before installing it
make[2]: *** [install-pylcmexecLTLIBRARIES] Error 1
make[2]: Leaving directory `/home/abarry/downloads/lcm-1.2.0/lcm-python'
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/home/abarry/downloads/lcm-1.2.0/lcm-python'
make: *** [install-recursive] Error 1
Looks like something with a hardcoded path (/home/albert/...) got stuck in there by mistake.
When I download the .tar.gz file and run bootstrap.sh
myself, everything installs correctly.
autoconf 2.69 fails on Ubuntu 14.04 if glib is not available.
admin@arm:~/lcm$ ./bootstrap.sh
running "autoreconf -i"...
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
configure.ac:9: error: possibly undefined macro: AC_MSG_ERROR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
Once glib is installed by sudo apt-get install libglib2.0-dev
autoconf succeeds.
Function working in a weird manner. The LCM C++ API says that the function returns >0 when a message is handled successfully.
I assume that it returns an integer only after giving a call to the subscribed callback function. In my case, the handleTimeout function returning 1 without even giving a call to the callback function. Can anyone explain this behaviour?
Consider this message type:
struct pointcloud_t
{
int32_t n_points;
float points [n_points][3];
int32_t n_channels;
float channels [n_points][n_channels];
}
And this c++ publishing code ... where no channel data is being filled in:
pointcloud_t out;
for (size_t i = 0; i < 100; i++) {
std::vector point = { 0.0, 1.0, 2.0};
out.points.push_back(point);
std::vector channels = {};
out.channels.push_back(channels);
}
out.n_points = out.points.size();
out.n_channels = 0;
lcm_pub_->publish("CHANNEL",&out);
Without these two lines calling publish() causes a seg fault
std::vector channels = {};
out.channels.push_back(channels);
Is this intended? or the publish function anyway?
I can't create a valid lcmlogfile programmatically. The way I'm doing this is something like the following:
while(eventnum < 2500) {
std::cout << "Eventnum: " << eventnum << std::endl;
struct timeval tv;
gettimeofday(&tv, NULL);
test_msg.utime = utime_now();
double f1 = 1; // 1 Hz
double f2 = 2; // 2 Hz
double f3 = 3; // 3 Hz
test_msg.joint_position[0] = sin(2 * M_PI * f1 * (double)test_msg.utime / 1000000.0); // we want seconds inside
test_msg.joint_velocity[0] = sin(2 * M_PI * f2 * (double)test_msg.utime / 1000000.0); // we want seconds inside
test_msg.joint_effort[0] = sin(2 * M_PI * f3 * (double)test_msg.utime / 1000000.0); // we want seconds inside
lcm::LogEvent le;
le.channel = "JOINT_TEST";
le.datalen = sizeof(test_msg);
le.eventnum = eventnum;
le.timestamp = test_msg.utime;
le.data = (void*)&test_msg;
lf->writeEvent(&le);
mylcm.publish(le.channel, &test_msg);
eventnum++;
usleep(1000);
}
Previously lf
is filled this way:
lf = new lcm::LogFile("/path/to/file.lcmlog", "w");
where lf
is lcm::LogFile* lf;
Basically I fill in the message, then I create a LogEvent
, I fill in its values and update the event num.
What I see from lcm-logplayer-gui and lcm-spy is a logfile with correct lengths and channels but the content of the messages always stays the same (not sure whether the value is the very last one or a random one).
Hi
I want to use lcm with tcpq. So I changed the lcm_create() in example/c/listener.c with the argument "tcpq://"
I am seeing the following error when listener is run.
LCM tcpq: connecting...
lcm_tcpq connect: Connection refused
LCM tcpq: Unable to connect to server
LCM tcpq: connecting...
lcm_tcpq connect: Connection refused
LCM tcpq: Unable to connect to server
Please tell me how to get it up.
I'm not sure if others have had similar issues, but in order to link LCM I had to add the file /etc/ld.so.conf.d/lcm.conf
containing /usr/local/lib
, which is the default LCM install directory.
I had to add the following environment variables
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
LUA_CPATH=/usr/local/lib/lua/5.3/?.so
For python I added the file lcm.pth
containing /usr/local/lib/python3.5/site-packages/
at the location returned by
python -m site --user-site
Some of these things could be done automatically by make install
, but I'm not familiar enough with automake to know how easy that is. At the very least we should add it to the documentation somewhere.
const double steering = 12.6;
, I'm getting an in-class declaration like this static const double steering = 12.6;
, which gives me compilation errors like the below:error: ‘constexpr’ needed for in-class initialization of static data member
Is this a known issue? If yes, could I know how to deal with this.
[EDIT] Something that either prevents a 'static' declaration or allows 'constexpr' should work.
const double[5] = {1.0,3.0,2.0,4.0,3.0}
While hunting down some unclean exit issues, I noticed that the lcm filehandle was leaking into child processes (first noticed with procman but we have a bunch of other directly forking code too.) Although fileno
is exposed so I could fix it at the application level, these days it's considered better practice to set them close-on-exec unless you really intend for them to stay open (examples: https://www.python.org/dev/peps/pep-0433/ https://www.securecoding.cert.org/confluence/display/c/FIO22-C.+Close+files+before+spawning+processes ).
There seems to be problem with the max amount of data that can be received / published via LCM.
For example, I am trying to publish a 2D array,
(in LCM file)
struct
{
double data[X][1160];
}
Here X is a constant numerical value. In my case, X is 5000. Now the function publishing data has no problem. But the program receiving this data, gives seg fault error if X > 900. (I haven't searched the specific value of X at which seg-fault occurs. For example, trying 1000 will give seg-fault. But at least for X<=900 there is no such problem).
Is there any max bytes limit that the lcm::handle() / handleTimeout() functions handle?
CC lcm_logger.o
lcm_logger.c: In function ‘write_thread’:
lcm_logger.c:261:13: warning: implicit declaration of function ‘fdatasync’ [-Wimplicit-function-declaration]
fdatasync(fileno(logger->log->f));
^
test scripts don't build correctly with the CMake build yet. reference binary locations generated by the autotools build.
Sorry, can I revisit issue #19 ? I get a very similar error on lcm 1.2.1. lcm-spy can find the LCM types I defined in my jar, but lcm-spy only shows a grey window.
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
ClassDiscoverer: java.lang.NoClassDefFoundError:apple/laf/AquaPopupMenuUI
jar: /usr/local/share/java/lcm.jar
class: com/jidesoft/plaf/aqua/AquaJidePopupMenuUI.class
ClassDiscoverer: java.lang.NoClassDefFoundError: org/apache/commons/io/output/ByteArrayOutputStream
jar: /usr/local/share/java/lcm.jar
class: org/apache/xmlgraphics/xmp/XMPPacketParser.class
ClassDiscoverer: java.lang.NoClassDefFoundError: org/apache/commons/io/output/ByteArrayOutputStream
jar: /usr/local/share/java/lcm.jar
class: org/apache/xmlgraphics/image/loader/impl/ImageConverterRendered2PNG.class
Found 15 LCM types
LCM: Disabling IPV6 support
LCM: TTL set to zero, traffic will not leave localhost.
ClassDiscoverer: java.lang.NoClassDefFoundError: apple/laf/AquaPopupMenuUI
jar: /usr/local/share/java/lcm.jar
class: com/jidesoft/plaf/aqua/AquaJidePopupMenuUI.class
Found 0 plugins
Hi all,
apparently LCM and Xenomai are not so keen to work together...
Latest issue is related to callback functions that are actually called on the wrong channel.
Now, what I'm doing is running several std::thread
from within a realtime thread.
Each one of these threads are creating their local copy of the LCM object and subscribing to a topic and assigning a callback to it.
Here's an example of thread body:
void ProntoWrapper::pronto_thread_body_xeno() {
lcm::LCM mylcm;
if(mylcm.good()) {
pronto_sub = mylcm.subscribe(pronto_channel, &ProntoWrapper::pronto_cb_xeno, this);
}
// At this point, we assume no one will subscribe again to mylcm
// therefore we do not lock the lcm object.
while(mylcm.good()) {
mylcm.handle(); // invoking the callback LCM
}
if(pronto_sub != NULL) {
mylcm.unsubscribe(pronto_sub);
}
}
the callback function pronto_callback_xeno
belongs to the class ProntoWrapper
.
What I noticed is that when running the procman-sheriff I was getting a periodic error of type "failed to decode pose_t".
I realized it was the periodic polling message from the sheriff, which is sent to a different channel and has of course a different type definition.
The workaround I adopted was to make the callback not automatically decoding and putting a control at the beginning, as follows:
void ProntoWrapper::pronto_cb_xeno(const lcm::ReceiveBuffer *rbuf,
const std::string &chan) {
if(chan.compare(pronto_channel) != 0) {
// Silently quit if it is not the channel we are looking for
return;
}
// decode and use the message here
}
Did it ever happened to you? Any clue about the cause?
This was tested on Ubuntu 14.04 with Xenomai patch 2.6.4
I can't seem to install LCM v1.3.1 on Windows with msvc-12.
I followed the advice in the WinSpecific folder for GLIB, i.e. I've installed msys2 and mingw. In the msys shell I installed the mingw-w64-x86_64-gcc
package along with autoconf
, automake
, and other utilities (git
, vim
, etc)
Am I suppose to build LCM in the msvc environment? If I do, I can't seem to link. At first because at first it was missing ws2_32
, but even after that it's missing a bunch of it's own symbols it seems like lcm_internal_pipe_write
. Even just to get to that point, in lcm/windows/WinPorting.h:10 I have to comment out lines 10 and 11 to avoid conflicts.
I noticed there are CMake files here that have a lot of if (WIN32)
, but when running cmake
from cmd
, I can't get them to find my glib-2.0 libs no matter what I set GLIB_PATH
to.
I'm going to go back to trying to build glibc without mingw to see if that helps.. But overall I've now lost two full work days trying to build LCM on Windows (whereas on Linux it took me under a minute I think from cloning to having it built.)
In RobotLocomotion/drake#3352 we ran into a problem where the name of a message's field collided with the name of a local variable in the generated C++ message code. Since we enabled the -Werror=shadow
compiler flag, this resulted in an error.
How receptive would the LCM community be to the following potential solutions? Are there other potential solutions that should be considered?
This would be nice in terms of hiding implementation details in .cc
files, but is a major project to undertake.
We could modify the C++ code generator to add a "_lcm" suffix to all local variables. Then we can update the documentation to say "thou shall not declare a LCM message field name that ends in "_lcm". This requirement could also be enforced by the code generator.
I found there is a EventLog.seek_to_timestamp() function in pyeventlog.c, however this function does not seem to be available in practice.
Our group has added the following feature to LCM python. It is desirable for us to know the number of messages remaining in the LCM queue so we can process the entire LCM buffer while avoiding the potential race condition you might get from "while True: lcm.handle()"
We have added the following code to pylcm.c, the function name is probably not the best, but I think this could improve life for users of python wrapper for LCM.
static PyObject *
pylcm_get_num_msgs_in_queue (PyLCMObject *lcm_obj)
{
return Py_BuildValue ("I", lcm_get_num_messages_in_queue (lcm_obj->lcm));
}
PyDoc_STRVAR (pylcm_num_msgs_doc,
"get_num_msgs_in_queue() -> int\n
\n
Returns the number of messages in the queue.\n
");
Then add the following line to the pylcm_methods array:
{ "get_num_msgs_in_queue", (PyCFunction)pylcm_get_num_msgs_in_queue, METH_NOARGS, pylcm_num_msgs_doc },
I'm getting occasional build failures of lcm-1.3.0 in lcm-java, with error messages like the following:
cd build && /usr/bin/jar xf .././jchart2d-code/ext/xmlgraphics-commons-1.3.1.jar
java.io.IOException: META-INF : could not create directory
at sun.tools.jar.Main.extractFile(Main.java:993)
at sun.tools.jar.Main.extract(Main.java:924)
at sun.tools.jar.Main.run(Main.java:264)
at sun.tools.jar.Main.main(Main.java:1231)
make[1]: *** [build/com/jidesoft/comparator/AlphanumComparator.class] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/home/travis/.julia/v0.4/LCMGL/deps/src/lcm-1.3.0/lcm-java'
make: *** [all-recursive] Error 1
make: Leaving directory `/home/travis/.julia/v0.4/LCMGL/deps/src/lcm-1.3.0'
For example, here's a Travis log in which the build fails: https://travis-ci.org/rdeits/LCMGL.jl/jobs/117841931
It's happening with probability on my Travis-CI servers, so it appears to be some non-determinism or race condition inside the LCM build, even though I'm performing a serial build.
We've observed this before with Drake: https://github.com/RobotLocomotion/lcm-pod/issues/7 but have since switched to our own cmake-based build for LCM for that project. There's some discussion of the possible causes over at that issue.
I know how to use LCM to exchange messages between processes in one Device,but can I use LCM to exchange messages between different Device?
I'm trying to integrate LCM into a new build process (specifically, Julia's BinDeps package), but because it performs builds out-of-source, I can't build the LCM 1.3.0 release. Would you be willing to publish a new release that contains at least the fixes from #41 ? I can probably roll my own, but having an official release here would make life much easier.
As we're starting to use LCM more, we're finding that it would be really helpful to have lcm.jar published to one of the maven repositories (maven central, bintray) when new LCM releases get tagged.
Optionally, even if you were to release a versioned/named .jar as part of the github release process, we could easily automate retrieval of that file using gradle.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.