espressif/arduino-esp32

Uninitialized variable in USB.cpp

Opened this issue · 0 comments

Board

ESP32-S2

Device Description

Custom

Hardware Configuration

Custom

Version

v3.1.1

IDE Name

None (command line)

Operating System

Linux

Flash frequency

40MHz

PSRAM enabled

yes

Upload speed

961200

Description

When compiling with --warnings all, the tud_mount_cb(), tud_umount_cb(), and tud_resume_cb() produce warnings concerning the uninitialized variable p.

In function 'esp_err_t arduino_usb_event_post(esp_event_base_t, int32_t, void*, size_t, TickType_t)', inlined from 'void tud_mount_cb()' at /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:103:25: /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:87:27: warning: 'p' may be used uninitialized [-Wmaybe-uninitialized] 87 | return esp_event_post_to(arduino_usb_event_loop_handle, event_base, event_id, event_data, event_data_size, ticks_to_wait); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.h:22, from /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:15: /home/railfan/.arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-cfea4f7c-v1/esp32s2/include/esp_event/include/esp_event.h: In function 'void tud_mount_cb()': /home/railfan/.arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-cfea4f7c-v1/esp32s2/include/esp_event/include/esp_event.h:391:11: note: by argument 4 of type 'const void*' to 'esp_err_t esp_event_post_to(esp_event_loop_handle_t, esp_event_base_t, int32_t, const void*, size_t, TickType_t)' declared here 391 | esp_err_t esp_event_post_to(esp_event_loop_handle_t event_loop, | ^~~~~~~~~~~~~~~~~ /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:102:28: note: 'p' declared here 102 | arduino_usb_event_data_t p; | ^ In function 'esp_err_t arduino_usb_event_post(esp_event_base_t, int32_t, void*, size_t, TickType_t)', inlined from 'void tud_umount_cb()' at /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:110:25: /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:87:27: warning: 'p' may be used uninitialized [-Wmaybe-uninitialized] 87 | return esp_event_post_to(arduino_usb_event_loop_handle, event_base, event_id, event_data, event_data_size, ticks_to_wait); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/railfan/.arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-cfea4f7c-v1/esp32s2/include/esp_event/include/esp_event.h: In function 'void tud_umount_cb()': /home/railfan/.arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-cfea4f7c-v1/esp32s2/include/esp_event/include/esp_event.h:391:11: note: by argument 4 of type 'const void*' to 'esp_err_t esp_event_post_to(esp_event_loop_handle_t, esp_event_base_t, int32_t, const void*, size_t, TickType_t)' declared here 391 | esp_err_t esp_event_post_to(esp_event_loop_handle_t event_loop, | ^~~~~~~~~~~~~~~~~ /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:109:28: note: 'p' declared here 109 | arduino_usb_event_data_t p; | ^ In function 'esp_err_t arduino_usb_event_post(esp_event_base_t, int32_t, void*, size_t, TickType_t)', inlined from 'void tud_resume_cb()' at /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:126:25: /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:87:27: warning: 'p' may be used uninitialized [-Wmaybe-uninitialized] 87 | return esp_event_post_to(arduino_usb_event_loop_handle, event_base, event_id, event_data, event_data_size, ticks_to_wait); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/railfan/.arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-cfea4f7c-v1/esp32s2/include/esp_event/include/esp_event.h: In function 'void tud_resume_cb()': /home/railfan/.arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.3-cfea4f7c-v1/esp32s2/include/esp_event/include/esp_event.h:391:11: note: by argument 4 of type 'const void*' to 'esp_err_t esp_event_post_to(esp_event_loop_handle_t, esp_event_base_t, int32_t, const void*, size_t, TickType_t)' declared here 391 | esp_err_t esp_event_post_to(esp_event_loop_handle_t event_loop, | ^~~~~~~~~~~~~~~~~ /home/railfan/.arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/USB.cpp:125:28: note: 'p' declared here 125 | arduino_usb_event_data_t p; | ^

tud_suspend_cb() does not generate that warning because it does initialize p before calling arduino_usb_event_post():

arduino_usb_event_data_t p; p.suspend.remote_wakeup_en = remote_wakeup_en; arduino_usb_event_post(ARDUINO_USB_EVENTS, ARDUINO_USB_SUSPEND_EVENT, &p, sizeof(arduino_usb_event_data_t), portMAX_DELAY);

The functions producing the warning skip the p.suspend.remote_wakeup_en = remote_wakeup_en; line (or something similar to initialize the variable).

Sketch

void setup()
{
	// Open serial communications and wait for port to open:
	Serial.begin(115200);
}

void loop()
{
	Serial.println("Blah!");
}

Debug Message

N/A - see description

Other Steps to Reproduce

arduino-cli compile -b esp32:esp32:esp32s2:CDCOnBoot=cdc,UploadMode=cdc,PSRAM=enabled --build-path ./build --build-property upload.maximum_size=4063232 --build-property compiler.cpp.extra_flags='-DGIT_REV=0xb7018aL -DVERSION_STRING="0.0.0"' --build-property compiler.optimization_flags=-O2 test --warnings all

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.