Help! Система беспричинно зависает/падает! Помогите выяснить почему

29 views
Skip to first unread message

artem...@gmail.com

unread,
Feb 3, 2018, 1:47:24 PM2/3/18
to uOS embedded
Здравствуйте!
Используем операционную систему на процессоре Элвис 1892ВМ10Я.
В совершенно произвольные моменты времени без какой-либо причины программа виснет, и в HALT выскакивают разные сообщения об ошибке. Причем программа может проработать час, а потом зависнуть с одним сообщением. Или может вообще сразу зависнуть, но с другим сообщением. Или может 15 мин проработать, а потом зависнуть. Закономерности нет вообще - поэтому никак не могу отследить причину.
Помогите расшифровать и найти проблему, потому что перепробовали уже все – вплоть до влезания в исходный код самой операционной системы.

Повторюсь – сообщения вылетают в произвольном порядке. Обычно вылетают 4 вида сообщений:

1. Данное сообщение вылетает очень редко
*** 0xb80032f4: exception 'Address Load'
*** cause=0x00808010, badvaddr=0x00010027, config=0x84060182
t0 = 1 s0 = b8407370 t8 = 0 lo = 0
at = 0 t1 = 0 s1 = b8020000 t9 = 0 hi = 8 v0 = ffff t2 = 0 s2 = b8400000 status = 30001c02
v1 = b8406e10 t3 = 0 s3 = 30001c01 epc = b80032f4
a0 = 0 t4 = 0 s4 = b8020000 gp = b8400000
a1 = 1 t5 = 0 s5 = b8407384 sp = b8405f68
a2 = ffff t6 = 0 s6 = b8019c3c fp = 0
a3 = 0 t7 = 0 s7 = b8020000 ra = b80030c8 Halt...


Следующие 3 зависания связаны тем, что падение происходит видимо на выходе из задачи IDLE, потому что в консоли выходит указатель на 0xb8400714 (это адрес задачи IDLE). Т.е. в консоли выскакивает сначала адрес задачи IDLE, а потом адрес одной из моих задач.

2. 0xb8400714 (junk) – указатель на задачу IDLE
0xb8405c48 (junk) – указатель на одну из моих задач

Assertion failed in function `task_activate'
D:/workspace_mips/ses150_v3/examples/mips-elvees/../../sources/kernel/internal.h, 126: ! task_is_waiting (task)
Task Address Prio Stack Space Msg Ticks
0xb8400714 (junk)
0xb8405c48 (junk)

intr_task.stack {0xb8405f40/0xb8405f58..0xb8405e98/0xb8405e58, 0xb80031e0, 0xb8405ee0} [intr_task.b8405f54] ________ ________ ________ ________
[intr_task.b8405f44] ________ >________ ________ ________
[intr_task.b8405f34] ________ ________ ________ ________
[intr_task.b8405f24] ________ ________ ________ ________
[intr_task.b8405f14] ________ ________ ________ ________
[intr_task.b8405f04] ________ ________ ________ ________ [intr_task.b8405ef4] ________ ________ ________ ________
[intr_task.b8405ee4] ________ ________ ________ ________
[intr_task.b8405ed4] ________ ________ ________ ________
[intr_task.b8405ec4] ________ ________ ________ ________ [intr_task.b8405eb4] ________ ________ ________ ________
[intr_task.b8405ea4] ________ ________ ________ =________
[intr_task.b8405e94] ________ ________ ________ ________
[intr_task.b8405e84] ________ ________ ________ ________ [intr_task.b8405e74] ________ ________ ________ ________ [intr_task.b8405e64] ________ ________ ________ ________
*** Please report this information
*** System halted.

3. 0xb8400714 (junk) – указатель на задачу IDLE
0xb840be1c (junk) – указатель непонятно на что (в том смысле, что у меня не создано задач по такому указателю)
Assertion failed in function `task_activate':
D:/workspace_mips/ses150_v3/examples/mips-elvees/../../sources/kernel/internal.h, 127:
Task Address Prio Stack Space Msg Ticks
0xb8400714 (junk)
0xb840be1c (junk)

(damaged).stack {0xb840cd10/0xb840cd28..0xb840cc68/0xb840cc28, 0xb8003204, 0xb840ccb0} [(damaged).b840cd24] ________ ________ ________ ________ [(damaged).b840cd14] ________ >________ ________ ________
[(damaged).b840cd04] ________ ________ ________ ________
[(damaged).b840ccf4] ________ ________ ________ ________
[(damaged).b840cce4] ________ ________ ________ ________
[(damaged).b840ccd4] ________ ________ ________ ________
[(damaged).b840ccc4] ________ ________ ________ ________
[(damaged).b840ccb4] ________ ________ ________ ________
[(damaged).b840cca4] ________ ________ ________ ________
[(damaged).b840cc94] ________ ________ ________ ________
[(damaged).b840cc84] ________ ________ ________ ________
[(damaged).b840cc74] ________ ________ ________ =________
[(damaged).b840cc64] ________ ________ ________ ________
[(damaged).b840cc54] ________ ________ ________ ________ [(damaged).b840cc44] ________ ________ ________ ________ [(damaged).b840cc34] ________ ________ ________ ________
*** Please report this information
*** System halted.

4. 0xb8400714 (junk) – указатель на задачу IDLE
0xb840244c (junk) – указатель на одну из моих задач

Assertion failed in function `mutex_lock':
D:/workspace_mips/ses150_v3/examples/mips-elvees/../../sources/kernel/mutex.c, 48: ((task_current)->stack[0] == 0xaau)
Task Address Prio Stack Space Msg Ticks
0xb8400714 (junk)
0xb840244c (junk)

task_params.stack {0xb84026a8/0xb84026a8..0xb8402530/0xb84024f0, 0xb8014370, 0xb8402648}
[task_params.b84026a4] ________ ________ ________ ________
[task_params.b8402694] ________ ________ ________ ________
[task_params.b8402684] ________ ________ ________ ________
[task_params.b8402674] ________ ________ ________ ________
[task_params.b8402664] ________ ________ ________ ________
[task_params.b8402654] ________ ________ ________ ________
[task_params.b8402644] ________ ________ ________ ________
[task_params.b8402634] ________ ________ ________ ________
[task_params.b8402624] ________ ________ ________ ________
[task_params.b8402614] ________ ________ ________ ________
[task_params.b8402604] ________ ________ ________ ________ [task_params.b84025f4] ________ ________ ________ ________
[task_params.b84025e4] ________ ________ ________ ________
[task_params.b84025d4] ________ ________ ________ ________ [task_params.b84025c4] ________ ________ ________ ________
[task_params.b84025b4] ________ ________ ________ ________
[task_params.b84025a4] ________ ________ ________ ________
[task_params.b8402594] ________ ________ ________ ________
[task_params.b8402584] ________ ________ ________ ________ [task_params.b8402574] ________ ________ ________ ________
[task_params.b8402564] ________ ________ ________ ________
[task_params.b8402554] ________ ________ ________ ________
[task_params.b8402544] ________ ________ ________ ________
[task_params.b8402534] ________ =________ ________ ________
[task_params.b8402524] ________ ________ ________ ________
[task_params.b8402514] ________ ________ ________ ________
[task_params.b8402504] ________ ________ ________ ________
[task_params.b84024f4] ________ ________ ________ ________
*** Please report this information
*** System halted.

Дмитрий Подхватилин

unread,
Feb 3, 2018, 2:47:10 PM2/3/18
to uOS embedded
Здравствуйте!

Какой компилятор используете?
Если uOS брали c GitHub, то из какой ветки?


3 февраля 2018 г., 14:32 пользователь <artem...@gmail.com> написал:

--
Вы получили это сообщение, поскольку подписаны на группу uOS embedded.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес uos-embedded+unsubscribe@googlegroups.com.
Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу uos-em...@googlegroups.com.
Перейдите в группу по ссылке https://groups.google.com/group/uos-embedded.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.

artem...@gmail.com

unread,
Feb 5, 2018, 3:58:32 AM2/5/18
to uOS embedded
Компилятор GCC
Используем ветку - stable

Александр Литягин

unread,
Feb 5, 2018, 4:18:33 AM2/5/18
to uOS embedded
суда по последнему вашему крашу - произошло переполнение стека задачи. а по остальным - побились структуры очередей задач.
структуры могли побиться в результате переполнения стека тоже (они как раз под стеком находятся)
на моей практике, переполнение стека - редкий случай. гораздо вероятнее словить выход за границы массива, или потерю указателя, с последующей порчей памяти.
в ветке с правками от alexrayne встроены отладочные ассерты, для режима отладки, контролирующие целостность стека. если у вас  именно этот код используется - значит вариант переполнения стека можно отбросить.

5 февраля 2018 г., 11:58 пользователь <artem...@gmail.com> написал:
Компилятор GCC
Используем ветку - stable

Дмитрий Подхватилин

unread,
Feb 5, 2018, 4:19:58 AM2/5/18
to uOS embedded
А компилятор откуда взят?
Дело в том, что нужно пользоваться специальной версией компилятора. Её Элвис предоставляет.

5 февраля 2018 г., 11:58 пользователь <artem...@gmail.com> написал:
Компилятор GCC
Используем ветку - stable

Александр Литягин

unread,
Feb 5, 2018, 4:21:44 AM2/5/18
to uOS embedded
Дело в том, что нужно пользоваться специальной версией компилятора. Её Элвис предоставляет.
+1
и мало версии компилятора, они еще требуют опции еще правильные ему задавать. 

5 февраля 2018 г., 12:19 пользователь Дмитрий Подхватилин <vat...@gmail.com> написал:
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес uos-em...@googlegroups.com.
Чтобы зайти в группу, перейдите по ссылке https://groups.google.com/group/uos-embedded.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Антон Федосов

unread,
Feb 6, 2018, 11:19:42 AM2/6/18
to uOS embedded
Вы имеете в виду этот форк? https://github.com/alexrayne/uos-embedded
понедельник, 5 февраля 2018 г., 12:18:33 UTC+3 пользователь Александр Литягин написал:

Александр Литягин

unread,
Feb 6, 2018, 11:36:45 AM2/6/18
to uOS embedded
Да. Только этот форк затянут  в основной реп, так что смотрите историю

6 фев 2018 г. 7:19 PM пользователь "Антон Федосов" <izon...@gmail.com> написал:
--
Вы получили это сообщение, поскольку подписаны на группу "uOS embedded".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес uos-embedded+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages