[NSWI004] dprintk makes my code stable

Petr Tuma petr.tuma at d3s.mff.cuni.cz
Sun Oct 25 07:11:53 CET 2020


... and, looking at your current solution, I would recommend https://stackoverflow.com/questions/9935190/why-is-a-point-to-volatile-pointer-like-volatile-int-p-useful as an additional study material.

Petr


On 24/10/2020 17:42, Petr Tuma wrote:
> Hi,
> 
> check the C modifier "volatile" and think about the possible difference in optimizations the compiler can do when you (1) have a loop that calls a complex function in a different compilation unit vs (2) have a loop that is quite simple and the compiler can see all variable manipulation.
> 
> https://barrgroup.com/embedded-systems/how-to/c-volatile-keyword
> 
> Petr
> 
> 
> On 24/10/2020 07:46, Jura Pelc wrote:
>> So have here awkward behaving of code.
>>
>>
>> I have a block of code where originally was `dprintk` for debugging and everything was fine.
>> But when I tried to remove it (for the sanity of debug output) kernel crashed. (Both with `.configure.py --debug`)
>> I can't see why this is happing and most importantly WHY IS THIS HAPPENING?
>>
>> both `print` and `dprintk` should not apply any change.
>>
>>
>> This is a copy of the issue: https://gitlab.mff.cuni.cz/teaching/nswi004/2020/team-please_dont/-/issues/15 <https://gitlab.mff.cuni.cz/teaching/nswi004/2020/team-please_dont/-/issues/15>
>> related to branch https://gitlab.mff.cuni.cz/teaching/nswi004/2020/team-please_dont/-/tree/bugfix/K-15 <https://gitlab.mff.cuni.cz/teaching/nswi004/2020/team-please_dont/-/tree/bugfix/K-15>
>>
>> file: `heap.c/search_heap_size`
>> When running with `dprintk`, code will run smoothly and the result is expected.
>> ```c
>> *((int*)scanner) = 0xC0FFEE;
>> dprintk("Scanning: 0x%x (%x)\n", scanner, *((int*)scanner));
>> if(*((int*)scanner) != 0xC0FFEE)
>> ```
>>
>> ``` shell
>> [DEBUG src/mm/heap.c:24 search_heap_size()] Scanning: 0x800fb130 (c0ffee)
>> [DEBUG src/mm/heap.c:24 search_heap_size()] Scanning: 0x800fc130 (c0ffee)
>> [DEBUG src/mm/heap.c:24 search_heap_size()] Scanning: 0x800fd130 (c0ffee)
>> [DEBUG src/mm/heap.c:24 search_heap_size()] Scanning: 0x800fe130 (c0ffee)
>> [DEBUG src/mm/heap.c:24 search_heap_size()] Scanning: 0x800ff130 (c0ffee)
>> [DEBUG src/mm/heap.c:24 search_heap_size()] Scanning: 0x80100130 (c0ffee)
>> [DEBUG src/mm/heap.c:27 search_heap_size()] NonMatch: 0x80100130 (ffffffff)
>> [DEBUG src/mm/heap.c:149 heap_init()] heap_begin: 0x80001130
>> [DEBUG src/mm/heap.c:150 heap_init()] heap_end:   0x800ff130
>> [DEBUG src/mm/heap.c:151 heap_init()] heap size: 1016 bytes
>> Hello world!
>> <msim> Alert: XHLT: Machine halt
>>
>> Cycles: 229951
>> ```
>>
>>
>>
>> When running **Without** `dprintk`, code will fail during the process.
>> ```c
>> *((int*)scanner) = 0xC0FFEE;
>> //dprintk("Scanning: 0x%x (%x)\n", scanner, *((int*)scanner));
>> if(*((int*)scanner) != 0xC0FFEE)
>> ```
>>
>> ``` shell
>> <msim> Alert: XRD: Register dump
>> processor 0
>>     0                0   at                0   v0 ffffffffc0000f20   v1           c0ffee   a0                0
>>    a1                0   a2                0   a3                0   t0                0   t1                0
>>    t2                0   t3                0   t4                0   t5                0   t6                0
>>    t7                0   s0                0   s1                0   s2                0   s3                0
>>    s4                0   s5                0   s6                0   s7                0   t8                0
>>    t9                0   k0             ff01   k1                0   gp ffffffff80000000   sp ffffffff800003e8
>>    fp                0   ra ffffffff80000440   pc ffffffff80000180   lo                0   hi                0
>> <msim> Alert: XINT: Interactive mode
>> [msim]
>> ```
>>
>>
>> -- 
>>
>> S pozdravem Jiří Pelc
>> Matematicko-fyzikální fakulta
>> Univerzita Karlova
>>
>> _______________________________________________
>> NSWI004 mailing list
>> NSWI004 at d3s.mff.cuni.cz
>> https://d3s.mff.cuni.cz/mailman/listinfo/nswi004
>>
> _______________________________________________
> NSWI004 mailing list
> NSWI004 at d3s.mff.cuni.cz
> https://d3s.mff.cuni.cz/mailman/listinfo/nswi004


More information about the NSWI004 mailing list