function crashes
-
here is the function to update cpu information .
when i open this app 2 at the same time it crashes.void ResourcesPage::updateCpuChart() { static int second = 0; QList<int> cpuPercents = im->getCpuPercents(); QVector<QLineSeries *> seriesList = cpuChart->getSeriesList(); for (int j = 0; j < seriesList.count(); j++){ int p = cpuPercents.at(j+1); for (int i = 0; i < (second < 61 ? second : 61); i++) seriesList.at(j)->replace(i, (i+1), seriesList.at(j)->at(i).y()); seriesList.at(j)->insert(0, QPointF(0, p)); seriesList.at(j)->setName(QString("CPU%1 %2%").arg(j+1).arg(p)); if(second > 61) seriesList.at(j)->removePoints(61, 1); } second++; cpuChart->setSeriesList(seriesList); }
HERE IS DEBUG OUTPUT OF THIS ERROR.
-
Hi
For second app, maybe is is empty ?
Something like
seriesList.at(j)->replace(i, (i+1), seriesList.at(j)->at(i).y());might crash if seriesList is empty or i is out of bounds.
I would add more checks and see what is going on. -
Hi
For second app, maybe is is empty ?
Something like
seriesList.at(j)->replace(i, (i+1), seriesList.at(j)->at(i).y());might crash if seriesList is empty or i is out of bounds.
I would add more checks and see what is going on. -
here is the function to update cpu information .
when i open this app 2 at the same time it crashes.void ResourcesPage::updateCpuChart() { static int second = 0; QList<int> cpuPercents = im->getCpuPercents(); QVector<QLineSeries *> seriesList = cpuChart->getSeriesList(); for (int j = 0; j < seriesList.count(); j++){ int p = cpuPercents.at(j+1); for (int i = 0; i < (second < 61 ? second : 61); i++) seriesList.at(j)->replace(i, (i+1), seriesList.at(j)->at(i).y()); seriesList.at(j)->insert(0, QPointF(0, p)); seriesList.at(j)->setName(QString("CPU%1 %2%").arg(j+1).arg(p)); if(second > 61) seriesList.at(j)->removePoints(61, 1); } second++; cpuChart->setSeriesList(seriesList); }
HERE IS DEBUG OUTPUT OF THIS ERROR.
@saber said in function crashes:
for (int i = 0; i < (second < 61 ? second : 61); i++) seriesList.at(j)->replace(i, (i+1), seriesList.at(j)->at(i).y());
maybe
for (int i = 0; i < std::min(std::min(second, seriesList.at(j)->points().size() - 1), 61); i++) seriesList.at(j)->replace(i, (i+1), seriesList.at(j)->at(i).y());
?
-
@saber said in function crashes:
for (int i = 0; i < (second < 61 ? second : 61); i++) seriesList.at(j)->replace(i, (i+1), seriesList.at(j)->at(i).y());
maybe
for (int i = 0; i < std::min(std::min(second, seriesList.at(j)->points().size() - 1), 61); i++) seriesList.at(j)->replace(i, (i+1), seriesList.at(j)->at(i).y());
?
-
@saber
I put my money you crash in the
seriesList.at(j)->at(i).y() part. -
@saber
I put my money you crash in the
seriesList.at(j)->at(i).y() part. -
@saber
Hi
I would insert qDebug() for size() of all lists involved and
also dump the values of i and j.
Its hard to guess at since normally one inspects the runtime variables in the debugger to see if all
are within bounds.what does seriesList.at(j) return ? a QString or list ?
-
@saber
Hi
I would insert qDebug() for size() of all lists involved and
also dump the values of i and j.
Its hard to guess at since normally one inspects the runtime variables in the debugger to see if all
are within bounds.what does seriesList.at(j) return ? a QString or list ?
-
@saber
Ok so its a Qlineseries pointer
Looking at its replace, it seems to be this one ?
void QXYSeries::replace(int index, qreal newX, qreal newY)anyway, you can split to multiple statements so its more clear which part that crashes.
for (int i = 0; i < (second < 61 ? second : 61); i++) {
auto Line= seriesList.at(j);
auto value = seriesList.at(j)->at(i).y();
Line->replace(i, (i+1),value );
} -
@saber
Ok so its a Qlineseries pointer
Looking at its replace, it seems to be this one ?
void QXYSeries::replace(int index, qreal newX, qreal newY)anyway, you can split to multiple statements so its more clear which part that crashes.
for (int i = 0; i < (second < 61 ? second : 61); i++) {
auto Line= seriesList.at(j);
auto value = seriesList.at(j)->at(i).y();
Line->replace(i, (i+1),value );
} -
-
@saber
Hi
Will it work on any linux?
Also, you are trying to fix the
Known Bugs
Opening two dashboard ,crash the whole app. <<< -- that one ?@mrjj
yes it wiil run on any linux. as far as i know.
because it has little dependences(qt,file,libmagic-dev/libmagic-mgc/libmagic1)
and yes for now i want to fix the "Opening two dashboard ,crash the whole app"
but it also have other bugs heremy way to fix all this and add this feature by opening issue in qt forum.
as i don't know the high level coding.i was intendant to do a invitation to join this project in this forum .but i was woried as it will be right way to that.
if you have some time to fix this issue........ -
@mrjj
yes it wiil run on any linux. as far as i know.
because it has little dependences(qt,file,libmagic-dev/libmagic-mgc/libmagic1)
and yes for now i want to fix the "Opening two dashboard ,crash the whole app"
but it also have other bugs heremy way to fix all this and add this feature by opening issue in qt forum.
as i don't know the high level coding.i was intendant to do a invitation to join this project in this forum .but i was woried as it will be right way to that.
if you have some time to fix this issue........ -
@mrjj
it is not a bigg project.
me and my friend made this app.
my view , his code. he is has no interest and time for it now.
so what you are thinking to .....@saber
Ok, so you Designed it and he programmed it. sweet.
Currently im spring cleaning pc so i have no linux around before monday.But if its easy to build, i might have a look at that bug next week.
That said i have huge project at work so I cant help program it
like project member. -
@saber
Ok, so you Designed it and he programmed it. sweet.
Currently im spring cleaning pc so i have no linux around before monday.But if its easy to build, i might have a look at that bug next week.
That said i have huge project at work so I cant help program it
like project member.