Linux приложения закрываются сами

Почему вылетают программы?

Когда переходил на Линукс, думал с этим больше никогда не встречусь. Ан нет, вылетают, чаще всего меня этим «радуют» firefox, qutim и xchat, короче кроссплатформенные. Разница с виндой только в том, что не выдаётся сообщение при этом. Нет я конечно понимаю, что заявленная стабильность *nix-систем относится не прикладным программам, а к консольным и серверным, которые прошли долгую обкатку на крупных серверах с системами BSD. Также понимаю, что прикладные программы пишутся обыкновенными людьми, которым конечно же свойственно делать ошибки, тем более что большинство программ под Линукс — свободные, значит пишутся не профессионалами, а любителями.
Хотя может я не так понимаю. Скажите, из-за чьей кривизны рук чаще всего вылетают программы: програмиста, мейнтейнера или юзера? И если это всё-таки програмиста, то как понимаю, я могу ему помочь, отправив багрепорт. Правда я не очень понимаю, что этот багрепорт представляет из себя, существуют ли общие правила его составления или всё индивидуально для каждой программы и для каждой сборки?

>которые прошли долгую обкатку на крупных серверах с системами BSD.
лицеваяпальма.эксе

значит пишутся не профессионалами, а любителями.

значит логи смотри.
Юзера — 90%

Я (тьфу-тьфу) не помню чтобы у меня что-то «вылетало.»

В современных дружественных дистрах есть специальные программы, которые при вылете предлагают тебе сочинить письмо мэйнтейнеру. Довольно общие правила сочинения можно посмотреть на любом багтрекере просто из самих багрепортов.

Удачи и упорства в этом деле. И помни, что хоть как-то описанный баг лучше никак не описанного бага.

> Почему вылетают программы?

Потому что некоторые гуру ленятся ловить исключения?

потому что большинство стандартных обработчиков сигналов просто прибивают программу.

>Когда переходил на Линукс, думал с этим больше никогда не встречусь.

почему? вера в страну эльфов такое подсказала?

что большинство программ под Линукс — свободные, значит пишутся не профессионалами, а любителями.

Скажите, из-за чьей кривизны рук чаще всего вылетают программы: програмиста, мейнтейнера или юзера?

кто бы составил такую статистику.

Правда я не очень понимаю, что этот багрепорт представляет из себя, существуют ли общие правила его составления или всё индивидуально для каждой программы и для каждой сборки?

открой любой багтрек и посмотри пример.

Источник

Приложения закрываются сразу после запуска

Запускаю приложение(thunderbird, deadbeef, pcmanfm . ) и сразу после запуска или через несколько секунд моментально закрывается. Если запускаю второй раз, то все работает.

И что, даже в консоль ничего не пишет? Или не через консоль запускаешь?

вот через консоль нормально работает)

А через что не работает? Может запускатор обновить надо? Или наоборот откатить, если после обновления сломалось.

Это «родительский контроль» — сначала уроки, потом — какерство.

Запускаю через awesome. Ко всему прочему на основном мониторе вместо обоев кажет рандомный цвет.

Читайте также:  Linux узнать модель звуковой карты

конфиг на пасту показывай, включая тему.

Вашу ж мать, сколько можно повторять? awesome —version мы должны из libastral.so получать??

awesome v3.5.9 (Mighty Ravendark) • Build: Mar 12 2016 01:11:40 for x86_64 by gcc version 5.3.0 (builduser@rw) • Compiled against Lua 5.3.2 (running with Lua 5.3) • D-Bus support: ✔ 

что полегче то? логи, конфиги, и любую другую полезную инфу нужно прилагать сразу, инфы много не бывает.

Лично мне тяжело сказать в чём дело, но есть универсальный способ найти проблему: обрезать конфиг в ноль (закомментить всё, кроме около-дефолта) и по-чутку добавлять, пока не найдешь в чём проблема.

У тебя же на дефолте нет такого поведения, верно?

Ты не первый, кто приходит с проблемой и не постит никакой информации. Меня уже передёргивает с этого. Но ты не принимай на свой счёт.

Мне кажется, что проблема в версии lua. Написанное под 5.2 имеет непредсказуемое поведение с 5.3, и наоборот (хоть и реже). Лично столкнулся некоторое время назад.

Первая рекомендация: обновиться на актуальную версию aweosme (4.0), а лучше сразу потестироваться на git master. То же самое тебе скажут на багтрекере awesome.

Вторая рекомендация: откатиться в дефолтный конфиг и потестировать с ним. И уже от него плясать.

Убрал смену обоев в таймере, ошибки пропали:

capi = function createtimer( time ) local time = time or 60 local timer = capi.timer timer:connect_signal("timeout", function() local handle = io.popen("ls -d " .. beautiful.wallpaper_folder_2560x1080 .. "* | shuf -n1 | xargs echo -n") local wallpaper = handle:read("*all") --gears.wallpaper.maximized(wallpaper, 2, true) handle:close() naughty.notify(< text = wallpaper, title = "wallpaper", position = "top_right", timeout = 2, screen = 1, ontop = false >) end) timer:start() return timer end 

есть что-то подробней раздела NEWS на apidoc?

Должна быть распоследняя версия. В качестве альтернативы в AUR есть awesome-git и awesome-luajit-git.

Убрал смену обоев в таймере, ошибки пропали:

А какие ошибки были? о_О Давай, запускай осом, чтобы он срал в лог, тыкай, что там у тебя не работает, затем лог на пасту и приходи. У меня по дням, начинающимся на букву «С» (Среда, Суббота, Сегодня) телепатия не работает.

есть что-то подробней раздела NEWS на apidoc?

Не понял вопроса. У них там подробнейшая документация. Wiki больше нет, да она и не поспевала за релизами в последние два года — там была отборная тухлятинка.

Да не было ошибок, это я про:
1)через несколько секунд моментально закрывается
2)на основном мониторе вместо обоев кажет рандомный цвет

Должна быть распоследняя версия. В качестве альтернативы в AUR есть awesome-git и awesome-luajit-git.

В community нет, из aur ставил только на виртуалку(без проблем работает на старом конфиге), на рабочую пока боюсь

Не понял вопроса. У них там подробнейшая документация.

читал, просто привык уже к wiki ‘. для 3.4 было так, а для 3.5 сделайте так . ‘

Читайте также:  Linux find exec bash

просто привык уже к wiki ‘. для 3.4 было так, а для 3.5 сделайте так . ‘

Теперь предлагается смотреть в логи самостоятельно. Пусть разработчики занимаются разработкой, тестеры — дебагом, а пользователи страдают пользуются.

С 3.5.9 можно (почти) безболезненно мигрировать, и отлавливая deprecated, обновить конфиг до актуального состояния.

В community нет, из aur ставил только на виртуалку(без проблем работает на старом конфиге), на рабочую пока боюсь

Там нечего бояться. Я гарантирую, что всё сломается будет работать с минимальным напилингом.

на основном мониторе вместо обоев кажет рандомный цвет

По устаревшей версии не подскажу, а в новой screen является объектом, потому твоя функция в 4.0 работать не будет, придётся править.

через несколько секунд моментально закрывается

Какое поведение с дефолтным конфигом? Как запускаешь софт ( modkey+r , или свои кейбинды?)? Что-то подсказывает мне, что косяк в твоём конфиге, только я его пока не нашёл.

Источник

Приложение неожиданно закрывается под Ubuntu

Я использую Ubuntu и иногда, когда система под нагрузкой одного из приложений просто почему-то пропадает. Обычно это Firefox, но это происходит и с другими приложениями. В системном журнале нет журналов и не отображается сообщение об ошибке.

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

Обновление: я нашел следующее в системном журнале, хотя не знаю, как его интерпретировать 🙂

Sep 17 16:54:03 mobav kernel: [10132.976820] BUG: unable to handle kernel paging request at 4d904064 Sep 17 16:54:03 mobav kernel: [10132.976825] IP: [] 0x4d904064 Sep 17 16:54:03 mobav kernel: [10132.976830] *pde = 00000000 Sep 17 16:54:03 mobav kernel: [10132.976833] Oops: 0000 [#1] SMP Sep 17 16:54:03 mobav kernel: [10132.976837] last sysfs file: /sys/devices/pci00 00:00/0000:00:1e.0/0000:14:02.0/rf_kill Sep 17 16:54:03 mobav kernel: [10132.976841] Dumping ftrace buffer: Sep 17 16:54:03 mobav kernel: [10132.976843] (ftrace buffer empty) Sep 17 16:54:03 mobav kernel: [10132.976845] Modules linked in: tun aes_i586 aes _generic ieee80211_crypt_ccmp binfmt_misc ppdev radeon drm bridge stp bnep cpufr eq_stats input_polldev joydev tp_smapi thinkpad_ec acpi_cpufreq uinput lp parpor t snd_hda_intel snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy snd_seq_oss snd_ seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device iTCO_wd t iTCO_vendor_support thinkpad_acpi ipw2200 intel_agp nsc_ircc psmouse led_class agpgart pcspkr ieee80211 ieee80211_crypt video sdhci_pci sdhci serio_raw snd so undcore snd_page_alloc nvram output btusb irda crc_ccitt reiserfs ohci1394 ieee1 394 tg3 fbcon tileblit font bitblit softcursor Sep 17 16:54:03 mobav kernel: [10132.976887] Sep 17 16:54:03 mobav kernel: [10132.976890] Pid: 4305, comm: multiload-apple No t tainted (2.6.28-15-generic #50~undervolt2-Ubuntu) 2529FKG

. и это происходит еще на пару страниц.

Источник

Почему закрывается «дочерний» процесс консольного приложения?

На данном этапе я делаю апдейтер для программы, который запускает bash скрипт с некоторыми командами и я не могу понять принцип поведения процесса с консольным приложением или каким-либо другом (например xcalc).

Читайте также:  Linux operating system applications

Для примера.
У меня есть Game.exe GUI приложение, которое создает процесс, который запускает консольное приложение Update.exe. Если я закрываю приложение Game.exe, то Update.exe закрывается так же.

Если для примера, я открою вместо Update.exe, какой-нить xcalc, то xcalc так же закроется в случае закрытия Game.exe.

Вопросы:
1. Почему так происходит?
2. Как сделать, чтобы Update.exe не закрывался при закрытии Game.exe?

Оценить 4 комментария

Nipheris

static public void Run(Version version)
ProcessStartInfo psi = new ProcessStartInfo();
string appDir = AppDomain.CurrentDomain.BaseDirectory;
psi.FileName = «Update.exe»;
psi.WorkingDirectory = Path.GetDirectoryName(appDir);
psi.Arguments = String.Format(«-exe \»\» -ud \»\» -v \»\»», Process.GetCurrentProcess().ProcessName, Config.ServerUrl, version);
Process update = Process.Start(psi);

Nipheris

your_mirror сделайте пожалуйста pstree при запущенном Update.exe и xcalc и посмотрите родителей этих процессов. Вероятнее всего у Update.exe это Game.exe, а у xcalc — кто-то другой, осталось понять, почему так. Вероятно, из-за того что xcalc нативный и он запускается как-то иначе, нежели управляемый Update.exe

Да, Вы правы. Eсли запускать не через MonoDevelop, то и Update.exe и xcalc являются дочерними процессами mono и как я говорил, при закрытии родителя они тоже закрываются.

Каким образом можно создать не дочерний процесс в mono?

Решил таким образом. Game.exe и Update.exe закроются, но останется открыта консоль из Update.exe и будет независимым процессом.

Melz, В Windows я делал обновление похожим образом, но там при закрытии Game.exe, Update.exe не являлся для него дочерним и существовал далее.

static public void Run(Version version) < ProcessStartInfo psi = new ProcessStartInfo() < WorkingDirectory = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory), FileName = "/usr/bin/mono", Arguments = String.Format("Update.exe -exe \"\" -ud \"\" -v \"\"", Process.GetCurrentProcess().ProcessName, Config.ServerUrl, version) >; Process.Start(psi).WaitForExit(); MainForm.Instance.Close(); >
public static int Main(string[] args) < ParseArguments(args); String tmpFile = Path.GetTempFileName(); File.Copy("update.sh", tmpFile, true); Process.Start("xterm", String.Format("-e sudo bash   ", tmpFile, AppName, UpdateDomain, VersionToInstall)); return 1; >

Только что попробовал на Win10 — работает. Виртуалку с моно я недавно грохнул )

Вы почти угадали 🙂 Есть два (известных мне) способа.

System.Diagnostics.Process.Start(@"C:\windows\system32\notepad.exe");

Этот способ, тогда дочерний процесс создается с флагом HasExited. Грубо говоря, даете понять что создавший его процесс умер еще до создания и система тогда создаст его самого по себе.

// Start the child process. Process p = new Process(); // Redirect the error stream of the child process. p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardError = true; p.StartInfo.FileName = @"C:\windows\system32\notepad.exe"; p.Start(); // Do not wait for the child process to exit before // reading to the end of its redirected error stream. // p.WaitForExit(); // Read the error stream first and then wait. //string error = p.StandardError.ReadToEnd(); p.WaitForExit();

Мы просто говорим чайлду что мол жди закрытия парента бесконечно.

В первом случае консольное приложение закрывается само, оставляя открытым блокнот. Во втором — остается открытым, но при закрытии блокнот все равно остается открытым.

Как оно поведет себя на моно не знаю )) Удачи )

Источник

Оцените статью
Adblock
detector