Отладочное сообщение & quot; Неверный параметр передан функции времени выполнения C & quot; используя QtQuick

Я только изучаю QtQuick и столкнулся с тем, что не могу объяснить. Просто, чтобы обеспечить некоторую предысторию, я использую следующее:

  • QtCreator 3.1.2 OpenSource
  • Отладочные библиотеки Qt 5.4, собранные из исходного кода с использованием MinGW-64 с потоками posix и SEH

Мой QML выглядит следующим образом:

import QtQuick 2.2
import QtQuick.Window 2.1
import QtQuick.Layouts 1.1
import QtQuick.Controls 1.3

Window {
visible: true
width: 500
height: 200

GridLayout {
id: mainGrid
rows: 3
columns: 2
columnSpacing: 2
rowSpacing: 2

Label {
text: "First Name:"}

TextField {

}
}
}

Пример работает нормально, но я получаю отладочное сообщение в консоли «Application Output» QtCreator со следующим текстом:

Msgstr «Неверный параметр передан функции времени выполнения C.»

Я провел некоторое тестирование, добавив один компонент в окно за один раз, и обнаружил, что компонент Label, по-видимому, вызывает появление этого сообщения.

Кто-нибудь знает, почему это происходит, и / или знает, как я могу заставить это уйти? И я должен быть обеспокоен этим сообщением? Я беспокоюсь о том, что это приведет к роковому исключению в моем приложении.

Дополнительная информация:

После нахождения хорошего поста Денисом Юричевым о том, как можно отладить эту ошибку с помощью gdb (найдено Вот), Я смог произвести следующую трассировку стека. Я еще не прошел через трассировку стека, чтобы сделать какие-либо выводы, но я хотел опубликовать его на тот случай, если кто-нибудь захочет помочь мне разобраться в этом:

Breakpoint 1, 0x000007fefdbba9cc in OutputDebugStringA () from C:\Windows\system32\KernelBase.dll
(gdb) bt
#0  0x000007fefdbba9cc in OutputDebugStringA () from C:\Windows\system32\KernelBase.dll
#1  0x000007feff5b2478 in msvcrt!_assert () from C:\Windows\system32\msvcrt.dll
#2  0x000007feff5b249b in msvcrt!_invalid_parameter () from C:\Windows\system32\msvcrt.dll
#3  0x000007feff590ef2 in pow () from C:\Windows\system32\msvcrt.dll
#4  0x000007feff575b78 in msvcrt!_localtime64 () from C:\Windows\system32\msvcrt.dll
#5  0x000000000d78a617 in DaylightSavingTA (t=-62198737200000) at jsruntime\qv4dateobject.cpp:291
#6  0x000000000d78a6b8 in LocalTime (t=-62198737200000) at jsruntime\qv4dateobject.cpp:306
#7  0x000000000d78f2b5 in QV4::DatePrototype::method_getFullYear (ctx=0x22cc30) at jsruntime\qv4dateobject.cpp:864
#8  0x000000000d797823 in QV4::BuiltinFunction::call (that=0x383300, callData=0x18760290) at jsruntime\qv4functionobject.cpp:565
#9  0x000000000d941107 in QV4::Object::call (this=0x383300, d=0x18760290)
at ../../include/QtQml/5.4.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h:278
#10 0x000000000d7d1c37 in QV4::Runtime::callProperty (context=0x156e0120, name=0x2e1dd0, callData=0x18760290) at jsruntime\qv4runtime.cpp:930
#11 0x000000000d7c92b0 in QV4::Moth::VME::run (this=0x22d987, context=0x156e0120, code=0x1942d6f8 "", storeJumpTable=0x0) at jsruntime\qv4vme_moth.cpp:365
#12 0x000000000d7cd248 in QV4::Moth::VME::exec (ctxt=0x156e0120, code=0x1942d468 "\017\217|\r") at jsruntime\qv4vme_moth.cpp:734
#13 0x000000000d7b88df in QV4::QmlBindingWrapper::call (that=0x389680) at jsruntime\qv4script.cpp:108
#14 0x000000000d941107 in QV4::Object::call (this=0x389680, d=0x18760230)
at ../../include/QtQml/5.4.0/QtQml/private/../../../../../src/qml/jsruntime/qv4object_p.h:278
#15 0x000000000d7b9ad7 in QV4::Script::run (this=0x194567a0) at jsruntime\qv4script.cpp:300
#16 0x000000000d8133d3 in QQmlScriptData::scriptValueForContext (this=0x19416530, parentCtxt=0x2b71ac70) at qml\qqmltypeloader.cpp:2643
#17 0x000000000d85247d in QQmlObjectCreator::create (this=0x22de20, subComponentIndex=-1, parent=0x0, interrupt=0x0) at qml\qqmlobjectcreator.cpp:216
#18 0x000000000d857fa1 in QQmlObjectCreator::createInstance (this=0x194f2190, index=2, parent=0x19481210, isContextObject=false)
at qml\qqmlobjectcreator.cpp:1091
#19 0x000000000d855c62 in QQmlObjectCreator::setPropertyBinding (this=0x194f2190, property=0x194144e8, binding=0x194f1bbc) at qml\qqmlobjectcreator.cpp:774
#20 0x000000000d855751 in QQmlObjectCreator::setupBindings (this=0x194f2190, bindingsToSkip=...) at qml\qqmlobjectcreator.cpp:733
#21 0x000000000d8594e1 in QQmlObjectCreator::populateInstance (this=0x194f2190, index=1, instance=0x194f2790, bindingTarget=0x194f2790,
valueTypeProperty=0x0, bindingsToSkip=...) at qml\qqmlobjectcreator.cpp:1348
#22 0x000000000d85883b in QQmlObjectCreator::createInstance (this=0x194f2190, index=1, parent=0x194f2790, isContextObject=false)
at qml\qqmlobjectcreator.cpp:1184
#23 0x000000000d855c62 in QQmlObjectCreator::setPropertyBinding (this=0x194f2190, property=0x19482d18, binding=0x194f1ac8) at qml\qqmlobjectcreator.cpp:774
#24 0x000000000d855751 in QQmlObjectCreator::setupBindings (this=0x194f2190, bindingsToSkip=...) at qml\qqmlobjectcreator.cpp:733
#25 0x000000000d8594e1 in QQmlObjectCreator::populateInstance (this=0x194f2190, index=0, instance=0x0, bindingTarget=0xbaadf00dbaadf00d,
valueTypeProperty=0x0, bindingsToSkip=...) at qml\qqmlobjectcreator.cpp:1348
#26 0x000000000d85883b in QQmlObjectCreator::createInstance (this=0x194f2190, index=0, parent=0x0, isContextObject=true) at qml\qqmlobjectcreator.cpp:1184
#27 0x000000000d852564 in QQmlObjectCreator::create (this=0x194f2190, subComponentIndex=-1, parent=0x0, interrupt=0x0) at qml\qqmlobjectcreator.cpp:222
#28 0x000000000d7f7076 in QQmlComponentPrivate::beginCreate (this=0x193af700, context=0x193ae530) at qml\qqmlcomponent.cpp:880
#29 0x000000000d7f6cc2 in QQmlComponent::beginCreate (this=0x193af6c0, publicContext=0x193a17c0) at qml\qqmlcomponent.cpp:829
#30 0x000000000d7f6c23 in QQmlComponent::create (this=0x193af6c0, context=0x193a17c0) at qml\qqmlcomponent.cpp:789
#31 0x000000000d84b38f in QQmlApplicationEnginePrivate::_q_finishLoad (this=0x155b4ab0, o=0x193af6c0) at qml\qqmlapplicationengine.cpp:130
#32 0x000000000d84b13a in QQmlApplicationEnginePrivate::startLoad (this=0x155b4ab0, url=..., data=..., dataFlag=false) at qml\qqmlapplicationengine.cpp:109
#33 0x000000000d84b68e in QQmlApplicationEngine::load (this=0x22fd90, url=...) at qml\qqmlapplicationengine.cpp:250
#34 0x0000000000401589 in qMain (argc=1, argv=0x15726a00) at ..\learnqtquick\main.cpp:9
#35 0x0000000000402e7d in WinMain () at qtmain_win.cpp:112
#36 0x00000000004013b5 in __tmainCRTStartup ()
#37 0x00000000004014c8 in WinMainCRTStartup ()

Дополнительная отладочная информация:

(gdb) run
Starting program: C:\Users\Chris\programming\build-learnqtquick-MinGW64-Debug\debug\learnqtquick.exe
[New Thread 5044.0x1284]
warning: QML debugging is enabled. Only use this in a safe environment.

[New Thread 5044.0x11dc]
[New Thread 5044.0x6ac]
[New Thread 5044.0x13e8]

Breakpoint 1, QV4::DateObject::Data::Data (this=0x3c48c0, engine=0x183560a0, date=...) at jsruntime/qv4dateobject_p.h:51
51                  value = date;
(gdb) print date->val
$1 = 4410089336627904512
(gdb) print date->doubleValue()
$2 = -62198737200000

Код, предположительно ошибочный от qv4value_p.h

double doubleValue() const {
Q_ASSERT(isDouble());
union {
quint64 i;
double d;
} v;
v.i = val ^ NaNEncodeMask;
return v.d;
}

…в частности, после назначения v.i = val ^ NaNEncodeMask, следующий результат в отладчике GDB:

(gdb) print v.d
$7 = -62198737200000
(gdb) print v.i
$8 = 14036674277620695040

Я не понимаю, как этот союз мог когда-либо производить правильное преобразование большого числа из quint64 в удвоение последовательно ?? Может ли кто-нибудь объяснить, чего пытался достичь автор оригинального кода?

Дополнительная информация обнаружена 28.02.2015 —
Видимо, приведенная выше информация относится только к отладочным сборкам. Я собрал выпускную версию этой версии Qt5.4 и не смог продублировать проблему. Затем, переключившись обратно на отладочную сборку, я снова создал проблему. Таким образом, я не буду подавать отчет об ошибке по этой проблеме. Вместо этого я ищу объяснение, относящееся к отладке в наборе компиляторов MinGW64.

3

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]