Author Topic: AirQuality bricklet bug  (Read 711 times)

remotecontrol

  • Hero Member
  • *****
  • Posts: 593
    • View Profile
AirQuality bricklet bug
« on: January 04, 2019, 09:52:28 »
Hallo TF Team,

mit gcc 8.2 erhalte ich beim Aufruf von air_quality_get_iaq_index einen Absturz wegen Stack corruption (bei älteren GCC Versionen passiert das nicht !!):

Code: [Select]
==5490== Process terminating with default action of signal 6 (SIGABRT): dumping core
==5490==    at 0x4F05D7F: raise (in /usr/lib/libc-2.28.so)
==5490==    by 0x4EF0671: abort (in /usr/lib/libc-2.28.so)
==5490==    by 0x4F48877: __libc_message (in /usr/lib/libc-2.28.so)
==5490==    by 0x4FDB414: __fortify_fail_abort (in /usr/lib/libc-2.28.so)
==5490==    by 0x4FDB3C5: __stack_chk_fail (in /usr/lib/libc-2.28.so)
==5490==    by 0x204CB9: air_quality_get_iaq_index (bricklet_air_quality.cpp:633)
==5490==    by 0x48E2892: brickapi::AirQualitySensor::readValue(brickapi::SensorItem::CHANNEL_NO) (AirQualitySensor.cpp:147)
==5490==    by 0xFF000577: ???
==5490==    by 0x52399AF: ???

ich habe mir den Bricklet-Code mal angesehen:
Code: [Select]
BootloaderHandleMessageResponse get_iaq_index(const GetIAQIndex *data, GetIAQIndex_Response *response) {
response->header.length      = sizeof(GetAllValues_Response);
response->iaq_index          = voc_get_iaq_index();
response->iaq_index_accuracy = voc_get_iaq_index_accuracy();

return HANDLE_MESSAGE_RESPONSE_NEW_MESSAGE;
}
ist das hier nicht falsch: da steht
Code: [Select]
response->header.length      = sizeof(GetAllValues_Response);

da wird doch die falsche Response-Größe zurück geliefert - oder nicht?

borg

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 3.142
    • View Profile
Re: AirQuality bricklet bug
« Reply #1 on: January 04, 2019, 11:47:51 »
In der Tat! Danke für den Hinweis, fixe ich gleich.
Wir sind die Borg, Widerstand ist Spannung durch Stromstärke!

borg

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 3.142
    • View Profile
Re: AirQuality bricklet bug
« Reply #2 on: January 04, 2019, 14:35:50 »
Neue Firmware ist veröffentlicht!
Wir sind die Borg, Widerstand ist Spannung durch Stromstärke!

remotecontrol

  • Hero Member
  • *****
  • Posts: 593
    • View Profile
Re: AirQuality bricklet bug
« Reply #3 on: January 04, 2019, 15:32:58 »
Kann es sein, dass der Bug mit der Temperatur-Kalibrierung wieder drin ist?

Mein Brickv zeigte nämlich schon Version 2.0.1 an => hab's überschrieben und wenn ich jetzt mit Wert 160 die Temperatur kalibriere bin ich auf einmal weit unter -100° C, dabei sollten ja nur 1.6° abgezogen werden??

Ich meine das hier:
https://www.tinkerunity.org/forum/index.php/topic,4689.0.html
« Last Edit: January 04, 2019, 15:39:42 by remotecontrol »

borg

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 3.142
    • View Profile
Re: AirQuality bricklet bug
« Reply #4 on: January 04, 2019, 17:00:03 »
Oh man, wie hab ich das denn jetzt wieder hinbekommen... :(

Ist jetzt auch gefixt.
Wir sind die Borg, Widerstand ist Spannung durch Stromstärke!

remotecontrol

  • Hero Member
  • *****
  • Posts: 593
    • View Profile
Re: AirQuality bricklet bug
« Reply #5 on: January 04, 2019, 18:21:18 »
Danke jetzt tut alles  :)