Сегодня же был обнаружен неприятный баг в PolyORB. PolyORB - это реализация технологии CORBA для Ады от компании AdaCore.
Вот такая простая программка:
with CORBA.ORB;
procedure Test is
begin
CORBA.ORB.Shutdown (True);
end Test;
Валится с segmentation fault.
Видимо я первый додумался останавливить ORB не запуская его до этого :-).
Мелочь, а не приятно.
12/08/2010
Баг в Qt
Понадобилось мне в QtAda использовать класс QProcess для запуска сторонних приложений и управления ими из моей программки.
В результате чего в Qt 4.7.1 был обнаружен баг:
Сигнал QProcess:started вырабатывается 2 раза при старте процесса.
Оказывается баг (QTBUG-7039) известен аж с 2009 года, и даже есть патч,
но отчего то Nokia не хочет исправлять эту ошибку. А жаль.
Вот пример приложения:
/* my_object.h */
#include
#include
#include
#include
class My_Object : public QObject {
Q_OBJECT
public:
My_Object () {
this->p = new QProcess;
connect (this->p,
SIGNAL (started()),
this,
SLOT(appStarted()));
};
void execute () {
if (p)
p->start ("ls");
if (!p->waitForStarted (10000))
qDebug () << "cannot start process" << p->exitCode ();
}
public slots:
void appStarted () {
qDebug () << "Slot : Process Started" << p->pid ();
}
private:
QProcess *p;
};
/* main.cpp */
#include "my_object.h"
int main(int argc, char *argv[])
{
My_Object *m = new My_Object;
m->execute ();
delete m;
}
После компиляции:
qmake -project && qmake && make
имеем:
./process
Slot : Process Started 16669
Slot : Process Started 16669
В результате чего в Qt 4.7.1 был обнаружен баг:
Сигнал QProcess:started вырабатывается 2 раза при старте процесса.
Оказывается баг (QTBUG-7039) известен аж с 2009 года, и даже есть патч,
но отчего то Nokia не хочет исправлять эту ошибку. А жаль.
Вот пример приложения:
/* my_object.h */
#include
#include
#include
#include
class My_Object : public QObject {
Q_OBJECT
public:
My_Object () {
this->p = new QProcess;
connect (this->p,
SIGNAL (started()),
this,
SLOT(appStarted()));
};
void execute () {
if (p)
p->start ("ls");
if (!p->waitForStarted (10000))
qDebug () << "cannot start process" << p->exitCode ();
}
public slots:
void appStarted () {
qDebug () << "Slot : Process Started" << p->pid ();
}
private:
QProcess *p;
};
/* main.cpp */
#include "my_object.h"
int main(int argc, char *argv[])
{
My_Object *m = new My_Object;
m->execute ();
delete m;
}
После компиляции:
qmake -project && qmake && make
имеем:
./process
Slot : Process Started 16669
Slot : Process Started 16669
Подписаться на:
Сообщения (Atom)