-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix segfault on entering IP #93
Conversation
Would you mind changing the target branch to the dev branch? Other than that LGTM |
Btw this is sick, thank you! |
I saw some discussion about that--but it was more for me to just write my own script (with chatgpt's help) than to figure out platformio's command-line options.
done |
On my esp32-3248S035C, after entering the IP address, I was seeing a segfault at lv_mem_free at .pio/libdeps/esp32-3248S035C/lvgl/src/misc/lv_mem.c:179 allocate_btn_areas_and_controls at .pio/libdeps/esp32-3248S035C/lvgl/src/widgets/lv_btnmatrix.c:877 lv_btnmatrix_set_map at .pio/libdeps/esp32-3248S035C/lvgl/src/widgets/lv_btnmatrix.c:94 lv_keyboard_update_map at .pio/libdeps/esp32-3248S035C/lvgl/src/extra/widgets/keyboard/lv_keyboard.c:397 lv_keyboard_set_mode at .pio/libdeps/esp32-3248S035C/lvgl/src/extra/widgets/keyboard/lv_keyboard.c:185 keyboard_event_ip_entry(_lv_event_t*) at src/ui/ip_setup.cpp:81 event_send_core at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:467 lv_event_send at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:63 lv_keyboard_def_event_cb at .pio/libdeps/esp32-3248S035C/lvgl/src/extra/widgets/keyboard/lv_keyboard.c:308 event_send_core at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:467 lv_event_send at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:63 lv_btnmatrix_event at .pio/libdeps/esp32-3248S035C/lvgl/src/widgets/lv_btnmatrix.c:520 lv_obj_event_base at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:91 (discriminator 1) event_send_core at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:458 lv_event_send at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:63 indev_proc_release at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_indev.c:970 indev_button_proc at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_indev.c:808 lv_timer_exec at .pio/libdeps/esp32-3248S035C/lvgl/src/misc/lv_timer.c:313 set_screen_brightness() at src/core/lv_setup.cpp:191 ip_init() at src/ui/ip_setup.cpp:239 setup() at src/main.cpp:28 loopTask(void*) at /home/user/etc/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:41 This seems to be due to a free-after-free. The solution here is to potentially change the keymap before running the rest of the logic, because the later logic may tear down the context. This change also only changes the keyboard mode on focus change, to avoid running this code on the many un-related events that this handler gets called for.
On my esp32-3248S035C, after entering the IP address, I was seeing a segfault at (I decoded this using a quick script I wrote)
This seems to be due to a free-after-free. The solution here is to potentially change the keymap before running the rest of the logic, because the later logic may tear down the context.
This change also only changes the keyboard mode on focus change, to avoid running this code on the many un-related events that this handler gets called for.