[RTEMS Project] #4216: prinf/vsnprintf crash when used in interrupt context
RTEMS trac
trac at rtems.org
Wed Jan 20 10:03:53 UTC 2021
#4216: prinf/vsnprintf crash when used in interrupt context
----------------------+----------------------
Reporter: ceasar | Owner: (none)
Type: defect | Status: closed
Priority: high | Milestone:
Component: arch/arm | Version: 4.11
Severity: major | Resolution: invalid
Keywords: | Blocked By:
Blocking: |
----------------------+----------------------
Comment (by ceasar):
Hi Sebastian ,
What you said any of the printf() functions in interrupt context is
undefined is really true. I wrongly thought only float/double data print
by printf() in interrupt context would crash, but int play the same. after
a test.
I show you the background why i get the wrong thought. I implemented a
system logger feature which supply LOG_I/LOG_E/LOG_W interface to format
and record logs to the storage device in RTEMS, supported both in thread
and interrupt. Logs in interrupt context formatted to a string by
vsnprintf firstly and then send to a async handler task by using message
queue. Teammate raise an issue said float/double data deliver to LOG_X
interface in interrupt context would crash OS.
After a deep dig, i found the stack as follows:
vsnprintf->_vsnprintf_r->_svfprintf_r->cvt->_DTOA_R->d2b
an data abort exception happened in d2b() function. So i just want to
double check vsnprintf() function have the same defect as printf().
BTW can you tell me why printf function can't used in interrupt? I heard
if irq handler cost more than 1ms RTEMS would go wrong in some way.
--
Ticket URL: <http://devel.rtems.org/ticket/4216#comment:2>
RTEMS Project <http://www.rtems.org/>
RTEMS Project
More information about the bugs
mailing list