Memory leak due to switch between objects and styles

Description

Memory leak due to switch between objects and styles

What MCU/Processor/Board and compiler are you using?

ESP32

What LVGL version are you using?

version: 8.3.9

What do you want to achieve?

i want to switch between some objects and some styles based on received uart message. but after certain number of object/style switching, esp32 resets with “tg0wdt_sys_reset”. without object/style change, everything works perfect. with respect to this fact, memory leak happening.

What have you tried so far?

i used esp32 lcd spi example with modifications.

Code to reproduce

void Display_Event_Handler(void)
{
if(Bowl_st == true)
{
lv_event_send(BOWL, LV_EVENT_PRESSED, NULL);
lv_event_send(END, LV_EVENT_RELEASED, NULL);
}
if(Bowl_st == false)
{
lv_event_send(BOWL, LV_EVENT_RELEASED, NULL);
}
if(DocA_st == true)
{
lv_event_send(DocA, LV_EVENT_PRESSED, NULL);
lv_event_send(DocB, LV_EVENT_RELEASED, NULL);
lv_event_send(DocC, LV_EVENT_RELEASED, NULL);
lv_event_send(END, LV_EVENT_RELEASED, NULL);
}
if(DocB_st == true)
{
lv_event_send(DocA, LV_EVENT_RELEASED, NULL);
lv_event_send(DocB, LV_EVENT_PRESSED, NULL);
lv_event_send(DocC, LV_EVENT_RELEASED, NULL);
lv_event_send(END, LV_EVENT_RELEASED, NULL);
}
if(DocC_st == true)
{
lv_event_send(DocA, LV_EVENT_RELEASED, NULL);
lv_event_send(DocB, LV_EVENT_RELEASED, NULL);
lv_event_send(DocC, LV_EVENT_PRESSED, NULL);
lv_event_send(END, LV_EVENT_RELEASED, NULL);
}
}
static void BOWL_event_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);

switch(code) {
case LV_EVENT_PRESSED:
    lv_obj_add_flag(BOWL_OFF, LV_OBJ_FLAG_HIDDEN);
    lv_obj_clear_flag(BOWL, LV_OBJ_FLAG_HIDDEN);
    ESP_LOGI(LV_TAG, "BOWL ON");
    break;
case LV_EVENT_RELEASED:
    lv_obj_clear_flag(BOWL_OFF, LV_OBJ_FLAG_HIDDEN);
    lv_obj_add_flag(BOWL, LV_OBJ_FLAG_HIDDEN);
    break;
default:

    break;
}

}
static void DocA_event_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);

switch(code) {
case LV_EVENT_PRESSED:
    lv_obj_add_style(DocA, &style_select_doctor, 0);
    ESP_LOGI(LV_TAG, "DOCTOR A");
    break;
case LV_EVENT_RELEASED:
    lv_obj_add_style(DocA, &style_default_doctor, 0);
    break;
default:
    break;
}

}

static void DocB_event_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);

switch(code) {
case LV_EVENT_PRESSED:
    lv_obj_add_style(DocB, &style_select_doctor, 0);
    ESP_LOGI(LV_TAG, "DOCTOR B");
    break;
    case LV_EVENT_RELEASED:
    lv_obj_add_style(DocB, &style_default_doctor, 0);
    break;
default:
    break;
}

}

static void DocC_event_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);

switch(code) {
case LV_EVENT_PRESSED:
    lv_obj_add_style(DocC, &style_select_doctor, 0);
    ESP_LOGI(LV_TAG, "DOCTOR C");
    break;
case LV_EVENT_RELEASED:
    lv_obj_add_style(DocC, &style_default_doctor, 0);
    break;
default:
    break;
}

}

void BOWL_event(void)
{
BOWL = lv_img_create(lv_scr_act());
lv_img_set_src(BOWL, &Bowl);
lv_obj_align(BOWL, LV_ALIGN_TOP_RIGHT, -10, 30);

BOWL_OFF = lv_img_create(lv_scr_act());
lv_img_set_src(BOWL_OFF, &Bowl_off);
lv_obj_align(BOWL_OFF, LV_ALIGN_TOP_RIGHT, -10, 30);

lv_obj_add_event_cb(BOWL,     BOWL_event_cb, LV_EVENT_ALL, NULL);
lv_obj_add_event_cb(BOWL_OFF, BOWL_event_cb, LV_EVENT_ALL, NULL);

}
void DOCTOR_event(void)
{
DocA = lv_btn_create(lv_scr_act());
lbl_A = lv_label_create(DocA);
lv_obj_add_style(DocA, &style_default_doctor, 0);
DocB = lv_btn_create(lv_scr_act());
lbl_B = lv_label_create(DocB);
lv_obj_add_style(DocB, &style_default_doctor, 0);
DocC = lv_btn_create(lv_scr_act());
lbl_C = lv_label_create(DocC);
lv_obj_add_style(DocC, &style_default_doctor, 0);
lv_label_set_text_static(lbl_A, LV_SYMBOL_PLAY" DOCTOR A");
lv_obj_align(DocA, LV_ALIGN_TOP_LEFT, 0, 5);

lv_label_set_text_static(lbl_B, LV_SYMBOL_PLAY" DOCTOR B");
lv_obj_align(DocB, LV_ALIGN_TOP_LEFT, 0, 50);

lv_label_set_text_static(lbl_C, LV_SYMBOL_PLAY" DOCTOR C");
lv_obj_align(DocC, LV_ALIGN_TOP_LEFT, 0, 95);

lv_obj_add_event_cb(DocA, DocA_event_cb, LV_EVENT_ALL, NULL);
lv_obj_add_event_cb(DocB, DocB_event_cb, LV_EVENT_ALL, NULL);
lv_obj_add_event_cb(DocC, DocC_event_cb, LV_EVENT_ALL, NULL);

}
void MY_DISP_init(lv_disp_t *disp)
{
scr = lv_disp_get_scr_act(disp);

lv_style_init(&style_default_doctor);
lv_style_set_radius(&style_default_doctor, 5);

/*Make a gradient*/
lv_style_set_bg_opa(&style_default_doctor, LV_OPA_COVER);
lv_style_set_bg_color(&style_default_doctor, lv_palette_lighten(LV_PALETTE_BLUE_GREY, 1));
lv_style_set_bg_grad_color(&style_default_doctor, lv_palette_main(LV_PALETTE_GREY));
lv_style_set_bg_grad_dir(&style_default_doctor, LV_GRAD_DIR_VER);
lv_style_set_bg_main_stop(&style_default_doctor, 128);
lv_style_set_bg_grad_stop(&style_default_doctor, 192);
lv_style_set_border_color(&style_default_doctor, lv_palette_darken(LV_PALETTE_BLUE_GREY, 3));
lv_style_set_border_width(&style_default_doctor, 2);

lv_style_init(&style_select_doctor);
lv_style_set_radius(&style_select_doctor, 5);
lv_style_set_bg_opa(&style_select_doctor, LV_OPA_COVER);
lv_style_set_bg_color(&style_select_doctor, lv_palette_lighten(LV_PALETTE_BLUE, 1));
lv_style_set_bg_grad_color(&style_select_doctor, lv_palette_main(LV_PALETTE_DEEP_PURPLE));
lv_style_set_bg_grad_dir(&style_select_doctor, LV_GRAD_DIR_VER);
lv_style_set_border_color(&style_select_doctor, lv_palette_darken(LV_PALETTE_LIGHT_BLUE, 3));
lv_style_set_border_width(&style_select_doctor, 2);
lv_style_set_shadow_width(&style_select_doctor, 5);
lv_style_set_shadow_ofs_y(&style_select_doctor, 1);
lv_style_set_shadow_opa(&style_select_doctor, LV_OPA_20);
lv_style_set_text_color(&style_select_doctor, lv_color_white());

show_chair_icon();
DOCTOR_event();

}
void gui_task()
{
MY_DISP_init(disp);
while(1)
{
if(Changed == true)
{
Display_Event_Handler();
Changed = false;
}
vTaskDelay(pdMS_TO_TICKS(10));
lv_timer_handler();
lv_task_handler();
}
}

Screenshot and/or video