-
Notifications
You must be signed in to change notification settings - Fork 470
Open
Description
When I have enough intensively output publishing (100 per second). I have got double free inside MQTTAsunc lib. PLease see snippet:
Program terminated with signal SIGABRT, Aborted.
#0 0x0000ffff8a121ec8 in ?? () from /lib/libc.so.6
[Current thread is 1 (LWP 1247)]
>>> bt full
#0 0x0000ffff8a121ec8 in ?? () from /lib/libc.so.6
No symbol table info available.
#1 0x0000ffff8a0ddd50 in raise () from /lib/libc.so.6
No symbol table info available.
#2 0x0000ffff8a0caf64 in abort () from /lib/libc.so.6
No symbol table info available.
#3 0x0000ffff8a115b08 in ?? () from /lib/libc.so.6
No symbol table info available.
#4 0x0000ffff8a12c150 in ?? () from /lib/libc.so.6
No symbol table info available.
#5 0x0000ffff8a12e2f0 in ?? () from /lib/libc.so.6
No symbol table info available.
#6 0x0000ffff8a130a78 in free () from /lib/libc.so.6
No symbol table info available.
#7 0x0000ffff914b7e38 in MQTTProtocol_removePublication (p=0xffff44001300) at /root/atom/depend/src/paho.mqtt.cpp/externals/paho-mqtt-c/src/MQTTProtocolClient.c:302
No locals.
#8 MQTTProtocol_emptyMessageList (msgList=0xffff540328b0) at /root/atom/depend/src/paho.mqtt.cpp/externals/paho-mqtt-c/src/MQTTProtocolClient.c:1018
m = 0xffff44000e70
current = 0xffff44001220
#9 0x0000ffff914cb204 in MQTTAsync_cleanSession (client=0xffff5402a430) at /root/atom/depend/src/paho.mqtt.cpp/externals/paho-mqtt-c/src/MQTTAsyncUtils.c:2594
rc = 0
found = 0x0
#10 0x0000ffff914cb43c in MQTTAsync_closeSession (props=0xffff440013b8, reasonCode=<optimized out>, client=<optimized out>) at /root/atom/depend/src/paho.mqtt.cpp/externals/paho-mqtt-c/src/MQTTAsyncUtils.c:2498
No locals.
#11 MQTTAsync_checkDisconnect (handle=0xffff54032650, command=command@entry=0xffff44001370) at /root/atom/depend/src/paho.mqtt.cpp/externals/paho-mqtt-c/src/MQTTAsyncUtils.c:979
was_connected = <optimized out>
m = 0xffff54032650
#12 0x0000ffff914ce0a4 in MQTTAsync_processCommand () at /root/atom/depend/src/paho.mqtt.cpp/externals/paho-mqtt-c/src/MQTTAsyncUtils.c:1552
rc = 0
command = 0xffff44001370
cur_command = 0xffff44000d00
ignored_clients = <optimized out>
#13 0x0000ffff914ce984 in MQTTAsync_sendThread (n=<optimized out>) at /root/atom/depend/src/paho.mqtt.cpp/externals/paho-mqtt-c/src/MQTTAsyncUtils.c:1844
rc = <optimized out>
command_count = <optimized out>
timeout = 1000
#14 0x0000ffff8a1202e8 in ?? () from /lib/libc.so.6
No symbol table info available.
#15 0x0000ffff8a187c5c in ?? () from /lib/libc.so.6
No symbol table info available.Code in my programm:
int MQTTNodeSingleton::mqtt_publish(
const std::string& topic_name,
const std::string& value,
int qos)
{
std::lock_guard<std::mutex> lock(mutex_);
if ((!mqtt_client) || (mqtt_state!=mqtt_connection_state::RUNNING))
{
return 1;
}
if (vin_.empty())
{
return 2;
}
const std::string& full_topic_name = GenerateFullTopicName(topic_name);
try
{
auto msg = mqtt::make_message(full_topic_name, value);
if (default_qos == MQTTNodeSingleton::NOQOS) {
msg->set_qos(qos);
} else {
msg->set_qos(default_qos);
}
if (qos > 0)
{
global_count_out_ += 1;
}
// Async publish without waiting
mqtt_client->publish(msg);
return 0;
}
catch (const mqtt::exception& exc)
{
mqtt_state=mqtt_connection_state::STOPPED; // will be mqtt_client.reset and reconnect with new;
MQTT_LOG_ERROR() << "EXCP (publish): " << exc.what();
}
catch (const std::bad_alloc& ex) {
mqtt_state=mqtt_connection_state::STOPPED; // will be mqtt_client.reset and reconnect with new;
MQTT_LOG_ERROR() << "EXCP (publish): Memory allocation failed: " << ex.what() ;
}
return 3;
}Metadata
Metadata
Assignees
Labels
No labels