Size: a a a

2021 February 19

W

WhoAmI? in Qt
мыши
что за задачи то ?
Чтение файла, его изменение, и запись изменённого файла
источник

м

мыши in Qt
то есть ты собираешься сначала читать файл во время того, как другая задача его изменяет а потом одновременно писать в один и тот же файл ?
источник

W

WhoAmI? in Qt
мыши
то есть ты собираешься сначала читать файл во время того, как другая задача его изменяет а потом одновременно писать в один и тот же файл ?
Нет, изменённый файл пишется в новый (создаётся новый файл)
источник

W

WhoAmI? in Qt
мыши
то есть ты собираешься сначала читать файл во время того, как другая задача его изменяет а потом одновременно писать в один и тот же файл ?
Задача в непрерывном потоке читает, изменяет файл и пишет в новый файл эти изменения.
Пользователь же задаёт, условно в QTableWidget, свои «пожелания» для изменения файла и хочет как можно быстрее получить новый файл с этими изменениями, но идёт непрерывный процесс, который нужно, получается, остановить
источник

W

WhoAmI? in Qt
WhoAmI?
@siilky @mefest прошу прощения, что сразу не ответил. Если мне нужно приостановить выполнение предыдущей задачи, чтобы выполнилась та, которую затребовал пользователь?
(Эти задачи открывают на чтение одни и те же файлы)
В этом случае нужно как-то пользоваться мьютексами или можно изначально у потока, функция которого постоянно работает, сделать не самый высокий приоритет, а задачи, которые ставит пользователь во время выполнения, делать с более высоким приоритетом в отдельном потоке? Спасибо!
Поэтому вот такой вопрос
источник

м

мыши in Qt
WhoAmI?
Задача в непрерывном потоке читает, изменяет файл и пишет в новый файл эти изменения.
Пользователь же задаёт, условно в QTableWidget, свои «пожелания» для изменения файла и хочет как можно быстрее получить новый файл с этими изменениями, но идёт непрерывный процесс, который нужно, получается, остановить
ну допустим, можно использовать какуюнибудь синхронизачию, чтобы остановить первую задачу, например condition variable
источник

W

WhoAmI? in Qt
мыши
ну допустим, можно использовать какуюнибудь синхронизачию, чтобы остановить первую задачу, например condition variable
Спасибо, я посмотрю🙏
источник

LP

Lena Pakulina in Qt
всем привет!
подскажите, в чем может быть причина получения нулевого указателя при динамическом касте вниз от QAbstractScrollArea к QtextEdit. Статик каст приводит нормально.
источник

T

TheDoctor in Qt
Flower Surgeon
// parse answer
auto data = reply->readAll();
auto doc = QJsonDocument::readAll(data);
auto obj = doc.object();

return obj;


Как-то так.
В общем, по этому поводу. Сегодня снова словил краш, краш на том же месте что и вчера. На моменте выполнения readAll().
источник

T

TheDoctor in Qt
источник

T

TheDoctor in Qt
Все strings внутри reply такие:
источник

T

TheDoctor in Qt
Так же сделал запрос к телеге еще раз, аналогичный.
Судя по всему баг с временем онлайна не связан, упал на том же запросе что и в прошлый раз.
Ответ от телеги полностью валидный, суммарным размером в 4752 символа.
источник

T

TheDoctor in Qt
В названии чата используется слеш, как вариант, может ли причина быть в этом?
источник

r

rockdrilla🐍 in Qt
TheDoctor
В названии чата используется слеш, как вариант, может ли причина быть в этом?
это надо курить исходники.
источник

T

TheDoctor in Qt
Я еще понадоедаю, можно?

В общем, гугл подсказал что SIGSEGV в данном случае случается только при условии что что-то продолжает делать запись в обьект из которого я сейчас пытаюсь сделать readAll.
То есть получается что QNetworkReply не завершился? Но QEventLoop тут нужен же именно для этой ситуации. Выходит Reply выдает сигнал на то что он завершился, но продолжает туда что-то дописывать?

Из решений есть вариант

if(reply){
  if(reply->error() == QNetworkReply::NoError){
     //readAll() & return QJsonObject
  }
}

А варианта освободить нету?
источник

IZ

Ilia Zviagin in Qt
TheDoctor
Я еще понадоедаю, можно?

В общем, гугл подсказал что SIGSEGV в данном случае случается только при условии что что-то продолжает делать запись в обьект из которого я сейчас пытаюсь сделать readAll.
То есть получается что QNetworkReply не завершился? Но QEventLoop тут нужен же именно для этой ситуации. Выходит Reply выдает сигнал на то что он завершился, но продолжает туда что-то дописывать?

Из решений есть вариант

if(reply){
  if(reply->error() == QNetworkReply::NoError){
     //readAll() & return QJsonObject
  }
}

А варианта освободить нету?
Не продолжает. Всё там ок.
источник

IZ

Ilia Zviagin in Qt
TheDoctor
Я еще понадоедаю, можно?

В общем, гугл подсказал что SIGSEGV в данном случае случается только при условии что что-то продолжает делать запись в обьект из которого я сейчас пытаюсь сделать readAll.
То есть получается что QNetworkReply не завершился? Но QEventLoop тут нужен же именно для этой ситуации. Выходит Reply выдает сигнал на то что он завершился, но продолжает туда что-то дописывать?

Из решений есть вариант

if(reply){
  if(reply->error() == QNetworkReply::NoError){
     //readAll() & return QJsonObject
  }
}

А варианта освободить нету?
Хочешь разобраться — шли весь код, а не обрывки
источник
2021 February 20

IZ

Ilia Zviagin in Qt
TheDoctor
Я еще понадоедаю, можно?

В общем, гугл подсказал что SIGSEGV в данном случае случается только при условии что что-то продолжает делать запись в обьект из которого я сейчас пытаюсь сделать readAll.
То есть получается что QNetworkReply не завершился? Но QEventLoop тут нужен же именно для этой ситуации. Выходит Reply выдает сигнал на то что он завершился, но продолжает туда что-то дописывать?

Из решений есть вариант

if(reply){
  if(reply->error() == QNetworkReply::NoError){
     //readAll() & return QJsonObject
  }
}

А варианта освободить нету?
Гугл тебе не мог такое подсказать...
источник

T

TheDoctor in Qt
Ilia Zviagin
Гугл тебе не мог такое подсказать...
Вот один из ответов самый близкий к моему случаю:
https://stackoverflow.com/questions/47947843/qnetworkreply-throwing-sigsegv-when-finished-signal-emitted
А про то что чем-то занята память взял отсюда:
https://stackoverflow.com/questions/31723468/qserialportreadall-leads-to-sigsegv-sigabrt-if-called-in-a-while-loop

Но, возможно я смешал людей с конями в одну кучу...
источник

м

мыши in Qt
TheDoctor
Вот один из ответов самый близкий к моему случаю:
https://stackoverflow.com/questions/47947843/qnetworkreply-throwing-sigsegv-when-finished-signal-emitted
А про то что чем-то занята память взял отсюда:
https://stackoverflow.com/questions/31723468/qserialportreadall-leads-to-sigsegv-sigabrt-if-called-in-a-while-loop

Но, возможно я смешал людей с конями в одну кучу...
Суровый дизайн какой-то, евентлупы внутри запроса ранить, так без кода целиком не разобраться
источник