source: rtems-testing/rtems-coverage/Explanations.txt @ a9fe533

4.11
Last change on this file since a9fe533 was a9fe533, checked in by Joel Sherrill <joel.sherrill@…>, on Jul 21, 2009 at 3:42:48 PM

2009-07-21 Joel Sherrill <joel.sherrill@…>

  • Explanations.txt: Multiple updates based on changes from myself and Santosh.
  • Property mode set to 100644
File size: 8.7 KB
Line 
1
2cancelrun.c:44
3Simple Test Case
4This is simply an untested normal use of pthread cancellation handlers.
5+++
6
7setcancelstate.c:50
8Simple Test Case
9A very simple test case where a NULL pointer to the oldstate is passed in.
10+++
11
12setcancelstate.c:65
13Simple Test Case
14The other is a branch from line 50 for !oldstate.
15+++
16
17setcanceltype.c:50
18Simple Test Case
19This is a case of passing in a bad cancelation type.
20+++
21
22setcanceltype.c:64
23Simple Test Case
24The other is a branch from line 50 for bad type.
25+++
26
27keycreate.c:80
28Simple Test Case
29Run out of memory while allocating key memory.
30+++
31
32keycreate.c:82
33Simple Test Case
34Run out of memory while allocating key memory.
35+++
36
37keyrundestructors.c:62
38Simple Test Case
39Restructure the code into 3 separate tests with continues and see which
40cases are really not hit. Then trigger the cases.
41+++
42
43keyrundestructors.c:64
44Simple Test Case
45Probably Iterating over a NULL value.
46+++
47
48mqueuecreatesupp.c:101
49Simple Test Case
50This is running out of message queues.
51+++
52
53mqueue.inl:60
54Simple Test Case
55Really two cases.
56
57mqueuecreatesupp.c:119 is running out of memory allocating the name.
58
59mqueuecreatesupp.c:142 is failing the core message queue initialize.
60Probably running out of memory while allocating the buffer memory.
61+++
62
63mqueuedeletesupp.c:57
64Simple Test Case
65This is a case of deleting a named message queue.
66+++
67
68mqueuetimedreceive.c:71
69Simple Test Case or Restructure switch to if
70Given that this is 3 instructions, it is probably a missed test case.
71+++
72
73mqueuetimedsend.c:71
74Simple Test Case or Restructure switch to if
75Given that this is 3 instructions, it is probably a missed test case.
76+++
77
78psignal.c:148
79?
80This appears to be a case of not exercising the loop fully.
81+++
82
83mutexinit.c:165
84Simple Test Case
85This code is not initializing a specific type of mutex -- probably recursive.
86+++
87
88mutextimedlock.c:59
89Simple Test Case (or Restructure)
90Looks like another undertested timeout path.
91+++
92
93pthread.c:83
94Simple Test Case
95This is a case of the sporadic scheduling budget being less than one clock
96tick in length.
97+++
98
99pthread.c:97
100Simple Test Case
101This is a case of the sporadic scheduling replinish period being less
102than one clock tick in length.
103+++
104
105pthread.c:129
106Simple Test Case
107This is a case of attempting to change the priority of a thread
108holding resources at the end of the sporadic server period.
109+++
110
111pthread.c:130
112Simple Test Case
113It looks like we don't have a good sporadic server test.  This is
114the normal case of changin priority.
115+++
116
117eventsurrender.c:81
118Interrupt Synchronization
119This is executed when events are sent to the currently executing thread
120while it is in the process of blocking.  I think sp39 or sp41 relates to
121this but may not be hitting the correct combination of timed out or Any/All.
122
123NOTE: This is hit sometimes so maybe the tests need tuning a bit.
124+++
125
126eventsurrender.c:82
127Interrupt Synchronization
128This is somehow related to eventsurrender.c:81 but the range is
129disconnected and I do not see why with certainty.  This could be
130when a timeout occurs while we are blocking on an event receive.
131+++
132
133eventtimeout.c:78
134Interrupt Synchronization
135This is a timeout while blocking waiting for an event receive with timeout.
136+++
137
138timerreset.c:60
139Simple Test Case
140new error case
141+++
142
143timerserverfireafter.c:80
144Interrupt Synchronization
145timer must be inserted by an ISR while we are inserting it
146+++
147
148coremutex.inl:171
149Simple Test Case
150pri ceiling, acquire when pri = ceiling
151+++
152
153coremutexsurrender.c:188
154Simple Test Case
155There must not be a test of a priority ceiling mutex getting released
156which results in a thread being unblocked and the UNBLOCKED thread's
157priority being elevated.
158+++
159
160debug.c:63
161Simple Test Case
162need a test
163+++
164
165heapresizeblock.c:158
166Simple Test Case
167looks like shrink block but so small the unused area gets freed
168+++
169
170heapallocatealigned.c:223
171Simple Test Case
172This looks like a case where the allocate aligned simply fails to get any
173memory.
174+++
175
176heapgetinfo.c:70
177Simple Test Case
178The heap is corrupted.  The block's size does not match the next block's
179previous size backwards link.  This may make sense to add to the
180Heap Walk test.
181+++
182
183heapresizeblock.c:144
184Simple Test Case
185Shrink a heap block with the resize.  The block after this one in memory
186must be free so the memory free by the shrinking will be merged with that
187already free block.
188+++
189
190heapwalk.c:144
191Test Case
192We are not hitting the case for having an error at this place.  I would have
193thought that making do_dump 0 and running all the cases is enough.  Maybe the
194test does not do what I think and this is why this case is missed.
195+++
196
197regionresizesegment.c:83
198Simple Test Case
199Apparently we do not have a test case where there is memory freed by the
200resize effort is sufficient to result in needing to look to see if we
201can unblock any tasks.
202+++
203
204ioregisterdriver.c:61
205Simple Test Case
206documented (not implemented) in sp40.  Fill up the driver table and
207register another driver.
208+++
209
210ioregisterdriver.c:71
211Simple Test Case
212documented (not implemented) in sp40.  Fill up the driver table and
213register another driver.  All of the cases in this file are probably
214related and will take attention when working on them to be sure I
215have explained them correctly.  The assembly is just hard to follow.
216+++
217
218ioregisterdriver.c:84
219Simple Test Case
220if reachable
221+++
222
223timerfireafter.c:76
224Interrupt Synchronization
225timer must be inserted or state altered by ISR
226+++
227
228thread.inl:230
229SHOULD BE COVERED
230sp39 should cover this .. timeout while blocking (eventtimeout.c:71)
231+++
232
233threadinitialize.c:91
234Simple Test Case
235This is for the case where the application uses the POSIX
236thread stack address attribute.
237
238NOTE: Code Should be Configured on POSIX
239+++
240
241threadinitialize.c:148
242Medium Test Case
243The allocation of the user extension data area must fail.  The failure should
244occur during the create case of an Floating Point enabled task.
245
246Since the stack is allocated first, it should be possible to have a test
247with a fair (16-32?) number of user extensions configured and then
248create a thread with increasingly larger stack until this case is hit.
249+++
250
251iterateoverthreads.c:42
252Simple Test Case
253Need to call iterate over threads in a test where there is an API configured
254which does not have threads.  Should be easy to add to sp54.
255+++
256
257threadqenqueuepriority.c:99
258Interrupt Synchronization
259This case is where we are iterating to enqueue a thread into a priority
260based thread queue but the thread we are looking at gets unblocked when
261we flash interrupts.  It is NOT the thread we are unblocking.
262Forward Search case.
263
264NOTE: Do not remove this from explanations.
265+++
266
267threadqenqueuepriority.c:146
268Interrupt Synchronization
269This case is where we are iterating to enqueue a thread into a priority
270based thread queue but the thread we are looking at gets unblocked when
271we flash interrupts.  It is NOT the thread we are unblocking.
272Reverse Search case.
273
274NOTE: Do not remove this from explanations.
275+++
276
277chain.inl:300
278Simple Test Case or Minor Code Rework
279This inlined case appears multiple times.
280
281_POSIX_signals_Clear_signals:71 chain get when empty
282_Watchdog_Adjust_to_chain may also have one.
283
284This is actually part of multiple paths and it appears to be
285dead because there is an explicit check for the chain being empty on the
286loop but a call to _Chain_Get_unprotected also checks for empty.  So we never
287get a case there _Chain_Get_unprotected returns NULL.  Can usually be
288addressed by reworking the loop in some way.
289+++
290
291threadqprocesstimeout.c:46
292Interrupt Synchronization
293This is processing a timeout on a thread that times out while it is in the
294process of blocking on a thread queue.
295+++
296
297threadqprocesstimeout.c:54
298Interrupt Synchronization
299This is the return code from threadqprocesstimeout.c:46.  Perhaps
300restructuring this code will make it easier to combine these.  Hit the
301normal path first and return.  Then fall into the unusual synchronization
302path.
303+++
304
305watchdoginsert.c:52
306Interrupt Synchronization
307This is when a higher priority interrupt inserts a timer while a lower
308priority interrupt is inserting one.
309+++
310
311watchdogremove.c:41
312Interrupt Synchronization
313Remove a watchdog while it is being inserted.
314+++
315
316watchdogremove.c:64
317Interrupt Synchronization
318Remove a watchdog while it is being removed.
319+++
320
321killinfo.c:152
322Simple Test Case
323Yet another path through here.
324+++
325
326killinfo.c:212
327Simple Test Case
328Multiple threads interested but find high priority one first.
329+++
330
331killinfo.c:247
332Simple Test Case
333Yet another path through here.
334+++
335
336killinfo.c:339
337Simple Test Case
338This is an error case where we can't allocate another signinfo structure.
339+++
340
341timerinserthelper.c:45
342Interrupt Synchronization
343We just removed the timer but the watchdog timer is being inserted by
344a higher priority interrupt.  We may be able to get this to happen
345with Classic API Timers.  But that is unclear.
346+++
Note: See TracBrowser for help on using the repository browser.