Fishwaldo opened a new pull request, #3792:
URL: https://github.com/apache/nuttx-apps/pull/3792

   ## Summary
   
   `UORB_FORMAT` compiles in the per-topic format strings, which reach their 
data through `%pB`. That is a NuttX printf extension, not a standard 
conversion, and `UORB_FORMAT` does not select it.
   
   A configuration that enables the listener but not the debug output therefore 
builds cleanly, runs, and prints the pointer instead of the reading:
   
   ```
   sensor_voltage(now:4294968998000):0xc0203c98B
   ```
   
   The address is the `va_format` the extension was meant to expand, and the 
trailing `B` is the conversion character being taken as ordinary text. Nothing 
warns, because to the compiler and to printf this is a valid format string that 
means something else.
   
   `DEBUG_UORB` already selects the extension, so the fault is invisible to 
anyone who has that on. The two are independent options and only one of them 
declared what it needed. Move the `select` onto `UORB_FORMAT`, the option that 
decides whether the format strings exist at all.
   
   ## Impact
   
   One line of `system/uorb/Kconfig`. Affects configurations with 
`UORB_FORMAT=y` and `DEBUG_UORB=n`, which gain `LIBC_PRINT_EXTENSION`. 
Configurations that already set `DEBUG_UORB` are unchanged, since it selects 
the extension today.
   
   ## Testing
   
   Reproduced on an ESWIN EIC7700 EVB with `UORB_FORMAT=y` and `DEBUG_UORB=n`: 
`uorb_listener` printed `0xc0203c98B` for every sample. With this change the 
same build prints the value:
   
   ```
   sensor_voltage(now:115415014):timestamp:115414993,voltage:12.037500
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to