Welcome, Guest. Please login or register.
Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Dunkan

Pages: [1]
1
Discussion | Обсуждение / Re: Memory leak
« on: February 05, 2020, 10:55:55 AM »
Супер! =)

2
Discussion | Обсуждение / Re: Memory leak
« on: February 05, 2020, 08:28:24 AM »
Благодарю!
Заметил что в новом коммите в функции
Code: [Select]
bool ScriptEngineManager::addFunction(const QString& name,
                                              QScriptEngine::FunctionSignature function,
                                              const QString& category,
                                              const QString& description)

на строке 282 имеется вызов функции containsFunction, которая была удалена... а также обратите внимание на строку 291, там тоже идет ошибочка небольшая

3
Discussion | Обсуждение / Re: Memory leak
« on: February 04, 2020, 12:39:14 PM »
Огромное спасибо! Сейчас пока разбираюсь с еще одной возможной утечкой, хотя это скорее даже не утечка, а исключительная ситуация, вкратце опишу свою мысль:
Имеется функция
Code: [Select]
void ScriptEngineModel::updateModel(), в которой используется следующее выражение
Code: [Select]
m_rootNode->clear();. Но т.к. m_rootNode создается в модели, которая хранится в классе типа Singlton, то при удалении ReportEngine и PreviewReportWidget m_rootNode с дочерними узлами остается в памяти, до завершения приложения. Но также был замечен рост кол-ва ScriptEngineNode почти с каждым новым циклом, а это уже становится похожим на утечку, использовал тот же тест что и выше, и проверял подобным способом:

Code: [Select]
static int countScriptEngineNode = 0;

ScriptEngineNode::ScriptEngineNode( const QString &name, const QString &description, NodeType type, ScriptEngineNode *parent, const QIcon &icon )
    : m_name( name ), m_description( description ), m_icon( icon ), m_type( type ), m_parent( parent )
{
    qDebug() << "create ScriptEngineNode " << this << ++countScriptEngineNode;
}

ScriptEngineNode::~ScriptEngineNode()
{
    qDebug() << "delete ScriptEngineNode" << this << --countScriptEngineNode;

    for ( int i = 0; i < m_childs.count(); ++i )
    {
        delete m_childs[i];
    }
}

4
Discussion | Обсуждение / Re: Memory leak
« on: February 04, 2020, 07:27:09 AM »
Но как быть с тем что каждый вызов ReportEngine::createPreviewWidget() приводит к утечке объектов TextItem. Даже после удаления ReportEngine, часть созданных TextItem висят в памяти.

Простейший пример:

Code: [Select]
for ( int i = 0; i < 10; i ++ )
{
    TestMemoryLeak();
}

void TestMemoryLeak()
{
    QString path = "Путь до отчета";

    LimeReport::ReportEngine *limereport = new LimeReport::ReportEngine();

    limereport->loadFromFile( path );

    auto prev = limereport->createPreviewWidget();

    delete prev;
    delete limereport;
}

5
Discussion | Обсуждение / Re: Memory leak
« on: February 03, 2020, 12:54:06 PM »
Начинал с различных утилит по поиску утечек. Но в итоге пришлось искать вручную.

В конструктор TextItem добавил:

Code: [Select]
TextItem::TextItem( QObject *owner, QGraphicsItem *parent )
{
    listLeak.append( this );
    qDebug() << "create " << dynamic_cast<QObject *>( this ) << listLeak.size();
}

Где listLeak: static QList<QObject *> listLeak;

В деструктор:

Code: [Select]
TextItem::~TextItem()
{
    listLeak.removeOne( this );

    qDebug() << "delete" << dynamic_cast<QObject *>( this ) << listLeak.size();
}

Шло постоянное увеличение размеров listLeak, при каждом открытии отчета.

проверил так же в цикле, подтвердилось
Code: [Select]
for ( int i = 0; i < 100; i++ )
{
    PreviewReportWidget *wdg = m_report->createPreviewWidget(); // где m_report = new LimeReport::ReportEngine()
    delete wdg;
}

отчет довольно большой, около 70 объектов при каждом цикле терялось и чуть более 7мб оперативной памяти за все циклы.
Убрав комментарии с 1353-1355 строк:
Code: [Select]
//foreach(PageItemDesignIntf* page, m_renderingPages){
//    delete page;
//}

проблема была успешно решена. Объекты теряться перестали, утечка уменьшилась с 7мб до чуть менее 1мб, возможно где то еще есть проблема, пока не могу найти.

Сможете также проверить данную проблему? Возможно я что-то где-то упускаю?

6
Discussion | Обсуждение / Memory leak
« on: February 03, 2020, 10:38:21 AM »
Добрый день!
Замечена утечка в файле https://github.com/fralx/LimeReport/blob/master/limereport/lrreportengine.cpp 1353-1356 строки.

7
Discussion | Обсуждение / Монолитная система
« on: February 06, 2019, 09:16:19 AM »
Добрый день!
Подскажите пожалуйста, для работы с LimeReport имеется класс ReportEngine, который используется для запуска дизайнера, созданием всех необходимых объектов и коннектов. Т.е. все это видится как такая монолитная и трудно изменяемая система. Дело в том что у меня есть необходимость выбрать из дизайнера только определенные окна и поместить их в свой проект, а также по задумке необходимо использовать окно с готовым отчетом (PreviewReportWindow) в определенной вкладке виджета. Сейчас я это делаю обходными и не самыми лучшими путями. Возможно есть какой-то простой способ работы с LimeReport и вы можете дать совет?

8
Приветствую! Если речь идет о crosstable то в limereport их покамест нет.

Благодарю за ответ!

9
Добрый день! А есть ли возможность вывода горизонтальных таблиц?

Пример:
               Значение 1   Значение 2   ...   Значение N
Название_1      15,6         55,1        ...      9,96
Название_2      5,2          1,23        ...      7,56
Название_3      6,31         4,78        ...      0,25   

Pages: [1]