PVRPerfServer Coredump on QNX 710

Hi Expert,

I am running PVRPerfServer on QNX 7.1.0 OS, and it end up to a coredump.
The console output is following:

PVRPerfServerDeveloper v14.153 64-bits - Build unknown.
Copyright (C) Imagination Technologies Ltd. All rights reserved.

  • Support: DevTech@imgtec.com
  • OS: QNX
  • Time (local): Tue, 11 Jun 2024 15:51:48 +0800 (15:51:48)
  • Time (UTC): Tue, 11 Jun 2024 07:51:48 +0800 (07:51:48)
  • System Perf Events: Unavailable

Process 29589551 (PVRPerfServerDeveloper) terminated SIGSEGV code=1 fltno=11 ip=000000344da02d90(/mnt/dji/partitions/user_crypto/security/PVRPerfServer/QNX710_aarch64le/./PVRPerfServerDeveloper@_btext+0x0000000000024000) mapaddr=000000000003bd90. ref=0000000000000000
segmentation violation (core dumped)

Can you explain the reason behind and how can I solve it?
Thanks!

BR,
Patrick

Hi Patrick,

Thanks for your question and welcome to the PowerVR Developer Forum!

Please, when possible try with the latest version of PVRTune, R24.1 (v14.157). You can download it from our Developer Portal ( Login - Imagination Developers ). Please note you will need to make a new account to access the downloads section.

Let me know if you still have issues after trying with the latest version.

Best regards,
Alejandro

Hi AlejandroC,

Thanks for your reply.
I downloaded the latest PVRTune for SGX, but it looks does not have a version fits my platform.
The platform I am using is Texas Instrument TDA4 VH, with QNX 7.1.0 OS.

BR,
Patrick

Hi Patrick,

Thanks for your message.

PVRTune v14.157 (R24.1) has binaries for PVRPerfServer QNX v7.1 for Armv8, Armv7 and x86_64 (folders QNX710_aarch64le, QNX710_armle-v7 and QNX710_x86_64 respectively inside PVRTune PVRPerfServer/ installation folder). Your platform (TI TDA4 VH) has Arm Cortex-A72 CPUs, which should be capable of running Armv8 binaries, which corresponds to the ones under the QNX710_aarch64le folder.

Please let me know if I am missing something here and what platform support you would need.

Best regards,
Alejandro

Hi Alejandro

I downloaded PVRTune_for_SGX.tar from Login - Imagination Developers and extraced, but I do not see QNX folders.
It looks like the default version for download is a very old version, can you send me the link for 2024 R1 version as I do not see it on the Dowloads section.

BR,
Patrick

Hi Patrick,

Thanks a lot for the clarification.

You should try downloading the Windows or the Linux 64-bit releases, which have the PVRPerfServer QNX 7.1 armv7 / armv8 / x86_64 binaries:

Best regards,
Alejandro

Hi Alejandro,

Thanks for your reply, I downloaded the latest version successfully.
However, It crashes on my platform as well, the console output is as follows:
PVRPerfServerDeveloper v14.157 64-bits - Build unknown.
Copyright (C) Imagination Technologies Ltd. All rights reserved.

  • Support: DevTech@imgtec.com
  • OS: QNX
  • Time (local): Wed, 12 Jun 2024 20:34:27 +0800 (20:34:27)
  • Time (UTC): Wed, 12 Jun 2024 12:34:27 +0800 (12:34:27)
  • System Perf Events: Unavailable

Process 48685109 (PVRPerfServerDeveloper) terminated SIGSEGV code=1 fltno=11 ip=0000003566fe055c(/mnt/dji/partitions/user_crypto/security/./PVRPerfServerDeveloper@_btext+0x000000000004993c) mapaddr=000000000006455c. ref=0000000000000000
segmentation violation (core dumped)

BR,
Patrick

Hi Patrick,

Thanks a lot for the information, I already reported it to the Tools Team.

It would be really useful to know the GPU driver version. It should be in the format [number].[number]@[number], for instance 1.15@6133109

Best regards,
Alejandro

Hi Alejandro,

Thanks for your information.
I check the platform and get the rgx firmware version 36.53.104.796
It is not in the format you mentioned, maybe I looked up in the wrong way, please let me know how to get the right GPU driver version. Thanks!

BR,
Patrick

Hi Alejandro,

Please let me if there is any updates on this. Thanks!

BR,
Patrick

Hi Patrick,

Thanks for your message,

We are still investigating this issue. I will report back to you as soon as we have more information.

Best regards,
Alejandro

Hi Patrick,

Regarding retrieving the GPU driver version, could you please try each of the commands below and provide the output?

cat /sys/kernel/debug/pvr/version
cat /proc/pvr/version
ls -l /usr/lib/x86_64-linux-gnu/libPVR*

The GPU driver version might be present in the format [number].[number]@[seven-digit-changelist] or [number].[number].[seven-digit-changelist]

Best regards,
Alejandro

Hi Patrick,

If the previous commands do no work, could you please try the alternative options below?

  • egl-configs (QNX tool to output EGL configs & GPU driver version).
  • command gles3-gears -verbose
  • command pvrdebug -dds

Let me know if you need any help with this commands. Regarding the issues you are experiencing, we are still investigating them.

Best regards,
Alejandro

Hi Alejandro,
Here is the console output, thanks!

root@QNX(TDA4-SLOT_A):/home/root#egl-configs
EGL_VENDOR = Imagination Technologies
EGL_VERSION = 1.4 build 1.15@6133109
EGL_CLIENT_APIS = OpenGL_ES OpenGL
EGL_EXTENSIONS = EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_renderbuffer_image EGL_IMG_cl_image EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_EXT_create_context_robustness EGL_IMG_image_plane_attribs EGL_EXT_swap_buffers_with_damage EGL_KHR_swap_buffers_with_damage EGL_KHR_partial_update EGL_EXT_buffer_age EGL_EXT_yuv_surface EGL_IMG_context_priority EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_no_config_context EGL_QNX_api_trace
EGL_EXTENSIONS (client) = n/a

±----±—±—±—±—±--------±-----±-------------±---------------±-----------------------+
| cfg | color buffer | depth/ | MSAA | surface type | supported APIs | native |
| id | r | g | b | a | stencil | | win/pbuf/pix | es1/es2/es3/vg | renderable / type / id |
±----±—±—±—±—±--------±-----±-------------±---------------±-----------------------+
| 1 | 8 | 8 | 8 | 8 | 0 / 0 | - | x x x | x x x - | x / 8 / RGBA8888 |
| 2 | 8 | 8 | 8 | 8 | 24 / 0 | - | x x x | x x x - | x / 8 / RGBA8888 |
| 3 | 8 | 8 | 8 | 8 | 24 / 8 | - | x x x | x x x - | x / 8 / RGBA8888 |
| 4 | 8 | 8 | 8 | 8 | 24 / 8 | 4x | x x x | x x x - | x / 8 / RGBA8888 |
| 5 | 8 | 8 | 8 | 8 | 24 / 8 | 2x | x x | x x x - | x / 8 / RGBA8888 |
| 6 | 8 | 8 | 8 | 8 | 24 / 8 | 4x | x x | x x x - | x / 8 / RGBA8888 |
| 7 | 8 | 8 | 8 | 8 | 0 / 0 | - | x x x | x x x - | x / 21 / BGRA8888 |
| 8 | 8 | 8 | 8 | 8 | 24 / 0 | - | x x x | x x x - | x / 21 / BGRA8888 |
| 9 | 8 | 8 | 8 | 8 | 24 / 8 | - | x x x | x x x - | x / 21 / BGRA8888 |
| 10 | 8 | 8 | 8 | 8 | 24 / 8 | 4x | x x x | x x x - | x / 21 / BGRA8888 |
| 11 | 8 | 8 | 8 | 8 | 24 / 8 | 2x | x x | x x x - | x / 21 / BGRA8888 |
| 12 | 8 | 8 | 8 | 8 | 24 / 8 | 4x | x x | x x x - | x / 21 / BGRA8888 |
| 13 | 10 | 10 | 10 | 2 | 0 / 0 | - | x x x | x x x - | x / 23 / RGBA1010102 |
| 14 | 10 | 10 | 10 | 2 | 24 / 0 | - | x x x | x x x - | x / 23 / RGBA1010102 |
| 15 | 10 | 10 | 10 | 2 | 24 / 8 | - | x x x | x x x - | x / 23 / RGBA1010102 |
| 19 | 10 | 10 | 10 | 2 | 0 / 0 | - | x x x | x x x - | x / 25 / BGRA1010102 |
| 20 | 10 | 10 | 10 | 2 | 24 / 0 | - | x x x | x x x - | x / 25 / BGRA1010102 |
| 21 | 10 | 10 | 10 | 2 | 24 / 8 | - | x x x | x x x - | x / 25 / BGRA1010102 |
| 25 | 5 | 6 | 5 | 0 | 0 / 0 | - | x x x | x x x - | x / 6 / RGB565 |
| 26 | 5 | 6 | 5 | 0 | 24 / 0 | - | x x x | x x x - | x / 6 / RGB565 |
| 27 | 5 | 6 | 5 | 0 | 24 / 8 | - | x x x | x x x - | x / 6 / RGB565 |
| 28 | 5 | 6 | 5 | 0 | 24 / 8 | 4x | x x x | x x x - | x / 6 / RGB565 |
| 29 | 5 | 6 | 5 | 0 | 24 / 8 | 2x | x x | x x x - | x / 6 / RGB565 |
| 30 | 5 | 6 | 5 | 0 | 24 / 8 | 4x | x x | x x x - | x / 6 / RGB565 |
| 31 | 5 | 5 | 5 | 1 | 0 / 0 | - | x x x | x x x - | x / 4 / RGBA5551 |
| 32 | 5 | 5 | 5 | 1 | 24 / 0 | - | x x x | x x x - | x / 4 / RGBA5551 |
| 33 | 5 | 5 | 5 | 1 | 24 / 8 | - | x x x | x x x - | x / 4 / RGBA5551 |
| 34 | 5 | 5 | 5 | 1 | 24 / 8 | 4x | x x x | x x x - | x / 4 / RGBA5551 |
| 35 | 5 | 5 | 5 | 1 | 24 / 8 | 2x | x x | x x x - | x / 4 / RGBA5551 |
| 36 | 5 | 5 | 5 | 1 | 24 / 8 | 4x | x x | x x x - | x / 4 / RGBA5551 |
| 37 | 4 | 4 | 4 | 4 | 0 / 0 | - | x x x | x x x - | x / 2 / RGBA4444 |
| 38 | 4 | 4 | 4 | 4 | 24 / 0 | - | x x x | x x x - | x / 2 / RGBA4444 |
| 39 | 4 | 4 | 4 | 4 | 24 / 8 | - | x x x | x x x - | x / 2 / RGBA4444 |
| 40 | 4 | 4 | 4 | 4 | 24 / 8 | 4x | x x x | x x x - | x / 2 / RGBA4444 |
| 41 | 4 | 4 | 4 | 4 | 24 / 8 | 2x | x x | x x x - | x / 2 / RGBA4444 |
| 42 | 4 | 4 | 4 | 4 | 24 / 8 | 4x | x x | x x x - | x / 2 / RGBA4444 |
| 43 | 8 | 8 | 8 | 8 | 24 / 8 | - | x | x x x - | x / 8 / RGBA8888 |
| 44 | 5 | 6 | 5 | 0 | 24 / 8 | - | x | x x x - | x / 6 / RGB565 |
| 45 | 4 | 4 | 4 | 4 | 24 / 8 | - | x | x x x - | x / 2 / RGBA4444 |
| 46 | 5 | 5 | 5 | 1 | 24 / 8 | - | x | x x x - | x / 4 / RGBA5551 |
| 47 | 8 | 8 | 8 | 8 | 24 / 8 | - | x | x x x - | x / 21 / BGRA8888 |
| 48 | 10 | 10 | 10 | 2 | 24 / 8 | - | x | x x x - | x / 23 / RGBA1010102 |
| 49 | 10 | 10 | 10 | 2 | 24 / 8 | - | x | x x x - | x / 25 / BGRA1010102 |
±----±—±—±—±—±--------±-----±-------------±---------------±-----------------------+
root@QNX(TDA4-SLOT_A):/home/root#gles3-gears -verbose
EGL_VENDOR = Imagination Technologies
EGL_VERSION = 1.4 build 1.15@6133109
EGL_CLIENT_APIS = OpenGL_ES OpenGL
EGL_EXTENSIONS = EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_renderbuffer_image EGL_IMG_cl_image EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_EXT_create_context_robustness EGL_IMG_image_plane_attribs EGL_EXT_swap_buffers_with_damage EGL_KHR_swap_buffers_with_damage EGL_KHR_partial_update EGL_EXT_buffer_age EGL_EXT_yuv_surface EGL_IMG_context_priority EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_no_config_context EGL_QNX_api_trace

EGL_CONFIG_ID = 2
EGL_RED_SIZE = 8
EGL_GREEN_SIZE = 8
EGL_BLUE_SIZE = 8
EGL_ALPHA_SIZE = 8
EGL_DEPTH_SIZE = 24
EGL_LEVEL = 0
EGL_NATIVE_RENDERABLE = EGL_TRUE
EGL_NATIVE_VISUAL_TYPE = 8
EGL_NATIVE_VISUAL_ID = 8
EGL_RENDERABLE_TYPE = 0x0045
EGL_SURFACE_TYPE = 0x0407
EGL_TRANSPARENT_TYPE = EGL_NONE

GL_VENDOR = Imagination Technologies
GL_RENDERER = PowerVR Rogue BXS-4-64
GL_VERSION = OpenGL ES 3.2 build 1.15@6133109
GL_EXTENSIONS = GL_ANDROID_extension_pack_es31a GL_APPLE_texture_format_BGRA8888 GL_EXT_blend_minmax GL_EXT_buffer_storage GL_EXT_clear_texture GL_EXT_clip_control GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_conservative_depth GL_EXT_copy_image GL_EXT_discard_framebuffer GL_EXT_draw_buffers GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex GL_EXT_EGL_image_array GL_EXT_float_blend GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_EXT_gpu_shader5 GL_EXT_multi_draw_arrays GL_EXT_multisampled_render_to_texture GL_EXT_multisampled_render_to_texture2 GL_EXT_occlusion_query_boolean GL_EXT_polygon_offset_clamp GL_EXT_primitive_bounding_box GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_group_vote GL_EXT_shader_implicit_conversions GL_EXT_shader_io_blocks GL_EXT_shader_non_constant_global_initializers GL_EXT_shader_pixel_local_storage GL_EXT_shader_pixel_local_storage2 GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_sRGB_write_control GL_EXT_tessellation_point_size GL_EXT_tessellation_shader GL_EXT_texture_border_clamp GL_EXT_texture_buffer GL_EXT_texture_cube_map_array GL_EXT_texture_format_BGRA8888 GL_EXT_texture_format_sRGB_override GL_EXT_texture_rg GL_EXT_texture_shadow_lod GL_EXT_texture_sRGB_decode GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_EXT_YUV_target GL_IMG_framebuffer_downsample GL_IMG_multisampled_render_to_texture GL_IMG_program_binary GL_IMG_read_format GL_IMG_shader_binary GL_IMG_texture_format_BGRA8888 GL_IMG_texture_npot GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_KHR_debug GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth_texture GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_element_index_uint GL_OES_fragment_precision_high GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_get_program_binary GL_OES_gpu_shader5 GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_required_internalformat GL_OES_rgb8_rgba8 GL_OES_sample_shading GL_OES_sample_variables GL_OES_shader_image_atomic GL_OES_shader_io_blocks GL_OES_shader_multisample_interpolation GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_tessellation_point_size GL_OES_tessellation_shader GL_OES_texture_border_clamp GL_OES_texture_buffer GL_OES_texture_cube_map_array GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_npot GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_OES_vertex_array_object GL_OES_vertex_half_float GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture
300 frames in 5.007 seconds = 59.911 FPS
300 frames in 5.001 seconds = 59.990 FPS
300 frames in 5.000 seconds = 59.999 FPS
300 frames in 5.001 seconds = 59.994 FPS
301 frames in 5.016 seconds = 60.004 FPS
300 frames in 5.000 seconds = 59.996 FPS
300 frames in 5.000 seconds = 59.994 FPS

BR,
Patrick

Hi Patrick,

We are able to run the same binaries, with the same GPU driver version, on the same QNX OS version, on a quite similar device (R-Car H3 Starter Kit WS 3.0). We suspect the issue you are experiencing is related with the GPU driver environment / setup.

Is there any chance you can do a factory reset of your device and provide any environment details you add afterwards before running PVRPerfServerDeveloper?

Best regards,
Alejandro

Hi Alejandro,

Our device is used for self-driving system development, so the enviroment is very complicated. I may not be able to reset it and provide you the details with every single step.

If you need any specific enviroment settings, please let me know, and I will try to provide.

Thanks!

BR,
Patrick

Hi Patrick,

I can think of two options to assist you:

  • You can generate a backtrace or coredump with gdb, which hopefully will help clarify what is failing.

  • You can do a clean install of the OS. I am not familiar with the exact device you are working with, but usually they have a memory card / slot where the Operating System is installed. If you can reset that memory card with a clean OS image recommended by Texas Instruments / QNX that would give you a good starting point. There are guides on how to do that, you can also ask TI / QNX for details. After that you could test again whether you are still having the same issues with PVRPerfServer (do not worry about providing environment details) and let me know if that is the case.

Best regards,
Alejandro

Hi Alejandro,

Thanks for your advice.
I have tried install a clean QNX OS on a EVM board, but it still end up to a coredump.
The forum does not allow me to attach a file, so can you please leave a email address for me to send the coredump file?

BR,
Patrick

Hi Patrick,

Thank you so much for going through those steps.

Could you please send an email to our Internal Support Portal, devtech.portal@imgtec.com ? this will open a new ticket where you can attach your coredump and we will follow up with you.

Best regards and many thanks in advance,
Alejandro

Thanks Alejandro, email sent.