Skip to content
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

Segment fault is triggered in course of Virtio-gpu rebooting test #7296

Closed
yakuizhao opened this issue Apr 18, 2022 · 2 comments
Closed

Segment fault is triggered in course of Virtio-gpu rebooting test #7296

yakuizhao opened this issue Apr 18, 2022 · 2 comments
Assignees
Labels
status: new The issue status: new for creation

Comments

@yakuizhao
Copy link
Contributor

In course of vm rebooting with virtio-gpu, it will trigger the segment fault under some scenario.
Thread 123 "mevent" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd37fe640 (LWP 2106)]
0x00007fffd06a45cf in unsafe_free (info=0x7fffc14ba650) at ../src/util/ralloc.c:294
294 info->child = temp->next;
(gdb) bt
#0 0x00007fffd06a45cf in unsafe_free (info=0x7fffc14ba650) at ../src/util/ralloc.c:294
#1 0x00007fffd06a4be3 in unsafe_free (info=) at ../src/util/ralloc.c:295
#2 ralloc_free (ptr=0x7fffc0125d20) at ../src/util/ralloc.c:265
#3 0x00007fffd0c64838 in glsl_type::~glsl_type (this=0x7fffc0125cb0, __in_chrg=) at ../src/compiler/glsl_types.cpp:214
#4 hash_free_type_function (entry=) at ../src/compiler/glsl_types.cpp:516
#5 0x00007fffd06a1b70 in _mesa_hash_table_destroy (ht=0x7fffc0030760,
delete_function=delete_function@

@yakuizhao yakuizhao added the status: new The issue status: new for creation label Apr 18, 2022
@yakuizhao yakuizhao self-assigned this Apr 18, 2022
@yakuizhao
Copy link
Contributor Author

[External_System_ID] ACRN-8745

yakuizhao added a commit to yakuizhao/acrn-hypervisor that referenced this issue Apr 19, 2022
In order to support the VGA op, one vga_thread is created. But
in course of virtio_gpu_reset, it will also create one vga_thread.
This is incorrect.

v1->v2: the thread_id of vga_thread is treated as read-only after
the thread is created.
        One thread_status based on atomic type indicates the life_cycle
of vga_thread.

v2->v3: Add the vga_thread_mtx in course of changing life_cycle of vga_thread

Tracked-On: projectacrn#7296
Acked-by: Wang Yu1 <[email protected]>
Signed-off-by: Zhao Yakui <[email protected]>
yakuizhao added a commit to yakuizhao/acrn-hypervisor that referenced this issue Apr 19, 2022
This is not needed as it is reconfigured in course of vga_thread_loop.
At the same time it is not thread-safe as the 3D api is involved
in vdpy_surface_set.

v2->v3: move the initialization of vga_surface width/height into
vga_thread.

Tracked-On: projectacrn#7296
Acked-by: Wang Yu1 <[email protected]>
Signed-off-by: Zhao Yakui <[email protected]>
yakuizhao added a commit to yakuizhao/acrn-hypervisor that referenced this issue Apr 19, 2022
Otherwise the memory related with vga_context is leaked.

v1->v2: Use the pthread_join instead of usleep to wait for
the termination of vga_thread.

Tracked-On: projectacrn#7296
Acked-by: Wang Yu1 <[email protected]>
Signed-off-by: Zhao Yakui <[email protected]>
yakuizhao added a commit to yakuizhao/acrn-hypervisor that referenced this issue Apr 19, 2022
Now all the 3D ops are handled in one dedicated thread. As 3D ops are
not safe in multi-thread env, some checks are added so that it can indicate
that it is not in the expected code path.

Tracked-On: projectacrn#7296
Acked-by: Wang Yu1 <[email protected]>
Signed-off-by: Zhao Yakui <[email protected]>
acrnsi-robot pushed a commit that referenced this issue Apr 19, 2022
In order to support the VGA op, one vga_thread is created. But
in course of virtio_gpu_reset, it will also create one vga_thread.
This is incorrect.

v1->v2: the thread_id of vga_thread is treated as read-only after
the thread is created.
        One thread_status based on atomic type indicates the life_cycle
of vga_thread.

v2->v3: Add the vga_thread_mtx in course of changing life_cycle of vga_thread

Tracked-On: #7296
Acked-by: Wang Yu1 <[email protected]>
Signed-off-by: Zhao Yakui <[email protected]>
acrnsi-robot pushed a commit that referenced this issue Apr 19, 2022
This is not needed as it is reconfigured in course of vga_thread_loop.
At the same time it is not thread-safe as the 3D api is involved
in vdpy_surface_set.

v2->v3: move the initialization of vga_surface width/height into
vga_thread.

Tracked-On: #7296
Acked-by: Wang Yu1 <[email protected]>
Signed-off-by: Zhao Yakui <[email protected]>
acrnsi-robot pushed a commit that referenced this issue Apr 19, 2022
Otherwise the memory related with vga_context is leaked.

v1->v2: Use the pthread_join instead of usleep to wait for
the termination of vga_thread.

Tracked-On: #7296
Acked-by: Wang Yu1 <[email protected]>
Signed-off-by: Zhao Yakui <[email protected]>
acrnsi-robot pushed a commit that referenced this issue Apr 19, 2022
Now all the 3D ops are handled in one dedicated thread. As 3D ops are
not safe in multi-thread env, some checks are added so that it can indicate
that it is not in the expected code path.

Tracked-On: #7296
Acked-by: Wang Yu1 <[email protected]>
Signed-off-by: Zhao Yakui <[email protected]>
@yakuizhao
Copy link
Contributor Author

The issue will be closed as the PR is already merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: new The issue status: new for creation
Projects
None yet
Development

No branches or pull requests

1 participant