Ошибки в текущей версии

В текущем выпуске StockNovice обнаружены следующие неустранённые ошибки, которые планируется устранить в будущих версиях.
  • Не удаляются ярлыки при деинсталляции программы в Windows 7. При удалении программы в ОС Windows 7 файлы из установочной директории удаляются, но остаются ярлыки для запуска программы, удаления программы, и т.д. Удалять эти ярлыки придётся вручную. На Windows XP ярлыки удаляются нормально.
  • Периодически проявляется ошибка сортировки при открытии сделки. После открытия файла сделки отсортированы по убыванию номера (сделки с самым большим номером, т.е. самые свежие, должны быть вверху). Но почему-то иногда новые сделки после открытия пишутся не вверху таблицы, а внизу. Чтобы устранить это, достаточно отсортировать сделки по возрастанию номера, а потом опять по убыванию - тогда сортировка сработает правильно.
  • Неправильная сортировка по полю потенциала.
  • Неправильное форматирование суммы на счёте при добавлении счёта: вместо "0,00" выводится "0".
  • Отсутствует передов надписей на кнопках в окнах сообщений об ошибках, запроса подтверждений и т.д.

При создании нового файла, если менять путь сохранения, то программа автоматически закрывается без каких-либо уведомлений. Создавать файл в директории по-умолчанию удается без проблем.
Ubuntu 12.04 с Unity (3.2.0-26-generic-pae)

Аватар пользователя cansee

Спасибо за сообщение об ошибке.

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

В любом случае, буду разбираться.

Аватар пользователя cansee

Пока не удалось воспроизвести. Пробовал на Ubuntu 12.04 32x с последними установленными обновлениями на 19.07.2012. При изменении пути, если файл создаётся в домашней директории пользователя - всё создаётся нормально. При попытке создать файла в директории, на которую у пользователя нет прав (в частности, "/opt") - выдаётся сообщение об ошибке. Закрытия программы в любом случае не происходит. Попробовал также на Windows 7 и в Arch Linux - тоже не воспроизводится. При сохранении по какому пути происходит ошибка? Пробовали ли вы воспроизвести эту ошибку на другом компьютере? На другой операционной системе?

- "Пробовал на Ubuntu 12.04 32x с последними установленными обновлениями на 19.07.2012."

У меня с-ма в аналогичном состоянии. Папки стандартные из home типа "видео", "документы". На windows 7 такой проблемы нет. Другого компьютера под рукой нет.
Записал видео, как это вижу я:
http://narod.ru/disk/57103336001.b89ffe3f636fb992f21eedc2cc9f58b8/error....

Аватар пользователя cansee

Судя по видео, программа закрывается не в момент нажатия кнопки подтверждения, а в момент выбора каталога. В этот момент должен работать ещё внутренний код Qt, реализующий работу диалога выбора файла, а не код StockNovice.
Поэтому, я предполагаю, что здесь что-то не так с файлами библиотек Qt, или с системой. Нормально ли работают другие приложения, основанные на Qt? У них файловый диалог позволяет выбирать директорию? Впрочем, файловый диалог из приложений Qt можно вызывать двумя способами. Один способ использует собственный диалог Qt, а второй - системный файловый диалог (который в Ubuntu использует GTK3). Поэтому другие приложения могут работать нормально.
Для выяснения причин может помочь запуск StockNovice в терминале. Надо открыть терминал и набрать:
/opt/StockNovice/StockNovice
Должна запуститься программа. Если в ней воспроизвести эту ошибку - возможно, в терминале будут выведены какие-то сообщения, которые могут прояснить ситуацию.

qBittorrent вроде бы работает без проблем, но я пока мало ним пользовался.
Терминал:

/opt/StockNovice/StockNovice
Got bus address: "unix:abstract=/tmp/dbus-7w2oDoKH26,guid=938fe34076bfd08d0e07478e0000002e"
Connected to accessibility bus at: "unix:abstract=/tmp/dbus-7w2oDoKH26,guid=938fe34076bfd08d0e07478e0000002e"
Registered DEC: true
Registered event listener change listener: true
Got bus address: "unix:abstract=/tmp/dbus-7w2oDoKH26,guid=938fe34076bfd08d0e07478e0000002e"
Connected to accessibility bus at: "unix:abstract=/tmp/dbus-7w2oDoKH26,guid=938fe34076bfd08d0e07478e0000002e"
Registered DEC: true
Registered event listener change listener: true
FIXME: handle dialog start.
FIXME: handle dialog end.
QSpiAccessible::accessibleEvent not handled: "2" obj: QMessageBox(0xbf925e68) ""
FIXME: handle dialog start.
FIXME: handle dialog end.
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QSidebar(0x8d3b538, name = "sidebar") "sidebar"
FIXME: handle dialog start.
Interface is not valid
ASSERT failure in : "Got an update for an invalid inteface. Investigate this.", file atspiadaptor.cpp, line 899
Аварийный останов (core dumped)

Честно говоря мне это ни о чем не говорит, но invalid interface! как бы намекает. Не подскажете в чем беда?

Аватар пользователя cansee

К сожалению, полностью вывод терминала мне непонятен. По-прежнему ясно только, что ошибка происходит не в моём коде. Почему она происходит - непонятно.

Однако, у меня появилась интересная версия. Всё это очень похоже на ситуацию, как если бы была запущена какая-то сторонняя программа, взаимодействующая с запущенными приложениями. Что-нибудь вроде резидентного дебаггера, профилировщика, ускорителя и т.п. В программе StockNovice не используется взаимодействие с DBus - а здесь в выводе терминала пишется об открытии интерфейса DBus. Также, в выводе видно использование некоего класса "QSpiAccessible". Этот класс не используется нигде в коде StockNovice. Однако, поиском по справке Qt его также найти не удаётся - поэтому, я не думаю, что это какой-то встроенный класс Qt. Использование этого класса также указывает на внешнее воздействие.

Поиск гуглом выдал, в числе прочих, ссылку на Launchpad, на котором обсуждался аналогичный баг с другой программой: https://bugs.launchpad.net/ubuntu/+source/qtiplot/+bug/997462. Там "баг" решился удалением пакета "qt-at-spi". Это пакет для вывода виджетов Qt через программы для людей с ограниченными возможностями - вроде Orca. Поставляется в составе Ubuntu. Возможно, этот пакет при активации "не дружит" с файловым диалогом Qt.

Поскольку в Ubuntu 12.04 этот пакет входит по умолчанию, скорее всего, у вас он есть. Нужен ли он вам? Если не нужен - может быть, его удаление устранит баг?

Второй возможный путь решения проблемы - использование отдельной сборки StockNovice. Я пересобрал программу, использовав другие функции для работы с файловыми диалогами. Эти функции должны открывать системный файловый диалог (и открывают на Ubuntu 12.04). В StockNovice они не были использованы, так как не позволяли задать расширение файла по умолчанию. Программу, использующую системный диалог, можно скачать по ссылке: https://dl.dropbox.com/u/67474737/StockNovice.zip. После скачивания надо извлечь из архива файл "StockNovice" и переписать им файл программы "/opt/StockNovice/StockNovice'. Возможно, после этого открытие/создание файла будет работать нормально - за исключением назначения расширения файла по умолчанию.

Удаление "qt-at-spi" помогло, как будто бы. В разные папки заходит и сохраняет без проблем. Спасибо большое.
Обидно только за способ №2 :). Зря проделанная работа получается.

Аватар пользователя cansee

Я рад, что проблема решилась.

Насчёт второго способа - переделать на другой способ вывода диалога совсем несложно. Заодно будет и такая сборка :)