Unsolved 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. -
@mrjj
seriesList have 4 items. -
@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());
?
-
@Taz742
not working .
two same window crash the app. -
@saber
Hi
Why not debug it then?
Should be easy to spot what is going on in debugger since you seem to hard crash. -
@saber
When window crashed what is 'i'-s value? -
-
@saber
I put my money you crash in the
seriesList.at(j)->at(i).y() part. -
@mrjj
sorry.
not a clue ,how to fix or what's the error. -
@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 ?
-
@mrjj
this
-
@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........ -
@saber
Ok, seems like a big project.
What ever happen to the person that wrote the code ? -
@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. -
@mrjj
thanks for helping.
it is easy to build .just the 2 dependencies .
thats ok ,if you could not join as a project member.
programar like you need little time to solve this listed problems.looking forward to hear for you.