Plattform Problem bzgl. Interpretation von Boolean Datentypen
-
Hallo zusammen,
ich habe ein seltsames Problem. Und zwar habe ich eine Art boolean toggle gebaut welcher zwischen true und false entsprechend umschaltet.
Unter einer Windows Umgebung funktioniert meine Anwendung tadellos aber aus mir bislang unbekannten Gründen erhalte ich unter Linux immer falsche Aktualisierungswerte.
D. h. meine Wertänderungobjekte erhalte ich unter Windows immer mit dem korrekten Boolean Wert aber unter Linux erhalte ich immer true zurück wodurch mein Programmcode nicht toggelt.
Unter Linux habe ich leider noch keine lauffähige Debugumgebung, daher stochere ich im Moment noch imdrüben jedenfalls habe ich ein Compiler spezifisches Problem was entweder durch die Serialisierung mit Jsoncpp, Boost oder unbekannten Seiteneffekte des g++ zustande kommt.
Welcher Programmcode relevant ist kann ich gerade auch nicht nachvollziehen, da mein Visualstudio immer den richtigen Wert besitzt.
Aber vielleicht hat Jemand einen Tipp für mich nach was ich suchen könnte.
Ach ja Valgrind liefert mir:
==5818== Conditional jump or move depends on uninitialised value(s) ==5818== at 0x809C5D9: Json::valueToString(int) (json_writer.cpp:50) ==5818== by 0x809CF08: Json::FastWriter::writeValue(Json::Value const&) (json_writer.cpp:216) ==5818== by 0x809D1F2: Json::FastWriter::writeValue(Json::Value const&) (json_writer.cpp:257) ==5818== by 0x809D0A9: Json::FastWriter::writeValue(Json::Value const&) (json_writer.cpp:238) ==5818== by 0x809CE7B: Json::FastWriter::write(Json::Value const&) (json_writer.cpp:201) ==5818== by 0x805CE96: sphinxoo::RestService::parseRequestUri(mg_connection*, std::string, char*) (RestService.cpp:320) ==5818== by 0x805B5F8: sphinxoo::RestService::mongooseCallback(mg_event, mg_connection*, mg_request_info const*) (RestService.cpp:32) ==5818== by 0x805B543: sphinxoo::RestService::mongooseCallbackStatic(mg_event, mg_connection*, mg_request_info const*) (RestService.cpp:14) ==5818== by 0x804D77A: call_user (mongoose.c:485) ==5818== by 0x8054760: handle_request (mongoose.c:3250) ==5818== by 0x8056636: process_new_connection (mongoose.c:3841) ==5818== by 0x8056978: worker_thread (mongoose.c:3908) ==5818== Uninitialised value was created by a stack allocation ==5818== at 0x80810F6: TcpConnection::readValues() (TcpConnection.cpp:28)Das betreffende Objekt was hier gebaut wird, erhält Initwerte im Konstruktor zugewiesen. Daher kann mein Problem durchaus auch bei Jsoncpp liegen
-
Hat sich erledigt, war ein unbekannter Seiteneffekt in einer 3rd Party Framework was aufgrund eines nicht initalisierten Klassenvar herrührte