This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Qt5 AM3359 + SGX + eglfs problem

Other Parts Discussed in Thread: UKERNEL, DA8XX, TSC2007

Hi,

Could anyone help me to undestand a problem that appears when I want to test an example from Qt5?. Yesterday I started the Qt5 compilation for my AM335x board. The board is a custom board with a XAM3359 720MHz + 256M DDR. In the past, I could run any example based on Qt4.8.4 + Qt3D without any problems.
Everything seems ok, but the first example analogclock crash to run with this output:

/proc/pvr # echo "4" > ./debug_level
/proc/pvr # /home/analogclock -platform eglfs
PVR: Hint: Setting WindowSystem to libpvrPVR2D_FRONTWSEGL.so
PVR:(Error): PVRSRVMetricsTimeNow: using (potentially) low resolution timer [95, /pvr_metrics.c]
evdevtouch: Using device /dev/input/event0
min X: 0 max X: 0
min Y: 0 max Y: 0
min pressure: 0 max pressure: 4095
device name: ti-tsc-adcc
Protocol type A
PVR:
PVR: Memory Stats
PVR: ------------
PVR:
PVR: High Water Mark = 4144 bytes
PVR:
PVR: 4144 bytes still allocated in 1 allocations
PVR:
PVR: 1 - 4144 bytes at 0x18e80 - eurasiacon/imgegl/tls.c:32
PVR:
PVR:(Warning): PVR2DEnumerateDevices: display device name too long, truncating [142, /pvr2dinit.c]
PVR:
PVR: Memory Stats
PVR: ------------
PVR:
PVR: High Water Mark = 4144 bytes
PVR:
PVR: 4144 bytes still allocated in 1 allocations
PVR:
PVR: 1 - 4144 bytes at 0x18e80 - eurasiacon/imgegl/tls.c:32
PVR:
PVR:(Warning): Running StartUpMemSpeedTest. High memory watermark will be ruined. Disable using apphint EnableMemorySpeedTest [45, /metrics.c]
PVR: Bytes : 512 1024 2048 4096 8192 16384 32768 65536 131072
PVR: ---------------|-------|-------|-------|-------|-------|-------|-------|-------|
PVR: H -> VB: 284.46 706.02 756.12 730.21 701.27 744.27 697.68 672.68 666.61
PVR: H -> H: 710.30 825.34 828.26 584.90 745.30 724.71 702.78 664.55 677.22
PVR:(Warning): PB Watermark Info - Alloc: 0x0 , Free: 0x9dd [486, /sgxrender_targets.c]
PVR:
PVR: Texture allocation HWM = 8 bytes
PVR:
PVR: Memory Stats
PVR: ------------
PVR:
PVR: High Water Mark = 2151442 bytes
PVR:
PVR: 21360 bytes still allocated in 2 allocations
PVR:
PVR: 1 - 17216 bytes at 0x1dd58 - eurasiacon/imgegl/srv.c:471
PVR: 2 - 4144 bytes at 0x18e80 - eurasiacon/imgegl/tls.c:32
PVR:
PVR:(Warning): HW Recovery stats: Host: 0 uKernel: 0 [130, /sgxrender_context.c]
PVR:
PVR: Memory Stats
PVR: ------------
PVR:
PVR: High Water Mark = 2151442 bytes
PVR:
PVR: 4144 bytes still allocated in 1 allocations
PVR:
PVR: 1 - 4144 bytes at 0x18e80 - eurasiacon/imgegl/tls.c:32
PVR:
PVR:
EGL Error : Could not create the egl surface: error = 0x3003

Aborted
/proc/pvr #

I tried to change the WindowsSystem param on powervr.ini, also the vram param on uboot but with same error. I can see that the program crashes into the function QEglFSWindow::create() when the program tries to make a second egl surface.
I compiled all Qt5 following the examples on http://gpupowered.org/node/16 for eglfs plugin

the gfx_check output is:

/proc/pvr # gfx_check.sh
WSEGL settings
[default]
WindowSystem=libpvrPVR2D_FRONTWSEGL.so
#WindowSystem=libpvrPVR2D_FLIPWSEGL.so

------
ARM CPU information
Processor : ARMv7 Processor rev 2 (v7l)
BogoMIPS : 498.89
Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc08
CPU revision : 2

Hardware : am335xevm
Revision : 0000
Serial : 0000000000000000
------
SGX driver information
Version SGX_DDK_Linux_CustomerTI sgxddk 19 1.9.RC2@2139099 (debug) /home/maxi/Graphics_SDK_4_08_00_01/GFX_Linux_KM
System Version String: SGX revision = 1.2.5
------
Framebuffer settings

mode "800x480-62"
# D: 30.000 MHz, H: 32.433 kHz, V: 61.895 Hz
geometry 800 480 800 960 32
timings 33333 39 39 29 13 47 2
rgba 8/16,8/8,8/0,8/24
endmode

Frame buffer device information:
Name : DA8xx FB Drv
Address : 0x87000000
Size : 3072000
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 0
YPanStep : 1
YWrapStep : 0
LineLength : 3200
Accelerator : No
------
Rotation settings
0
------
Kernel Module information
Module Size Used by Tainted: G
omaplfb 11563 0
pvrsrvkm 478926 1 omaplfb
------
Boot settings
console=ttyO0,115200n8 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait init=/init ip=off vram=16M omapfb.vram=0:4M,1:4M,2:4M
------
Linux Kernel version
Linux ONIX 3.2.0 #1 Thu Oct 18 10:30:04 ART 2012 armv7l GNU/Linux
/proc/pvr #

and the init kernel powervr modules output is:

[ 10.621093] Disabling lock debugging due to kernel taint
[ 10.659896] PVR: PVRCore_Init
[ 10.679866] PVR: PVRSRVDriverProbe(pDevice=bf066068)
[ 10.685275] PVR: EnableSystemClocks: Enabling System Clocks
[ 10.691291] PVR: GPTIMER11 clock is 24MHz
[ 10.696126] PVR: PVRCore_Init: major device 252
[ 10.861369] PVR: Installing MISR with cookie bf068f38
[ 10.866913] PVR: Installing device LISR SGX ISR on IRQ 37 with cookie c79b81c0
[ 10.875750] PVR: SysFinalise: Version string: SGX revision = 1.2.5
PVR:
PVR: Memory Stats
PVR: ------------
PVR:
PVR: High Water Mark = 0 bytes
[ 10.903255] omaplfb: Device 0: Framebuffer physical address: 0x87000000
[ 10.903278] omaplfb: Device 0: Framebuffer virtual address: 0xffb00000
[ 10.903293] omaplfb: Device 0: Framebuffer size: 3072000
[ 10.903306] omaplfb: Device 0: Framebuffer virtual width: 800
[ 10.903319] omaplfb: Device 0: Framebuffer virtual height: 960
[ 10.903332] omaplfb: Device 0: Framebuffer width: 800
[ 10.903343] omaplfb: Device 0: Framebuffer height: 480
[ 10.903356] omaplfb: Device 0: Framebuffer stride: 3200
[ 10.903368] omaplfb: Device 0: LCM of stride and page size: 102400
[ 10.903381] omaplfb: Device 0: non-DRM framebuffer
[ 10.903393] omaplfb: Device 0: Auto Update Mode
[ 10.967424] omaplfb: Device 0: Maximum number of swap chain buffers: 2
[ 10.974385] omaplfb: Device 0: PVR Device ID: 1
Loaded PowerVR consumer services.

Thanks in advance, I will appreciate some help so I can figure out what the problem is.


Maxi

  • I am aware of this, please use -platform minimalegl till this is analysed more. I have patchset for input support on minimalegl if needed for you.

  • Hi Prabindh

    Thanks for your response. I'm glad to hear from you.

    I tested the analogclock example using the minimalegl plugin and it worked fine. Next, with this working plugin I continued my testing on an own Qt5 application, more complex than analogclock and using Qt3D but the performance was very poor. Only I could reach 2fps when before I reached 30fps and 40fps using Qt4.8.4. I hope this can help you.

    Could you give me some patch to improve the minimalegl plugin?

    And, of course you feel free to ask me for any other test.

    Thank you!

  • - Can you possibly share code that you are running to check performance - on both Qt 4.8 and Qt 5 ?

    - In Qt5 Alpha (from http://releases.qt-project.org/qt5.0/alpha/qt-everywhere-opensource-src-5.0.0-alpha.tar.gz),  can you please check the performance with eglfs (I did confirm eglfs works in that version) ?

     

  • Yes, I will prepare a test application I have in QT5 and other for Qt4 coming soon.

    Meanwhile, I am preparing to test the application on QT5 Alpha.

    Thanks again!

    Maxi

  • Hi Prabindh

    I'm back, I can confirm that Qt5 Alpha has the eglfs plugin working. I tested that feature on the analogclock example. But the Qt3D module is a little different and it is missing some features I need for my custom application.

    So now I'm trying to modify the Qt3D module that is included with QT5 alpha in order to test my custom application.

    Thanks!

    Maxi

  • That is great. Please confirm the performance with eglfs compared to minimal ?

     

  • Hi Prabindh

    Good news, I can also confirm that eglfs plugin is working and running on 20fps in Qt5 Alpha + Qt3D (qt5alpha). The performance is very good because I have a lot of code running and several threads too. Now, I'am going to clean and debug my custom application because I lose the OpenGL context many times due to many overpainting using Qt4 code styles. Next I'm going to try to figure out what is the problem on eglfs plugin in the Qt5 release version.

    If you have any idea about this issue, please let me know.

    Thanks!

    Maxi


  • Hi Prabindh,

    Can you please share your QT5 patch set for input support on minimalegl?

    Thanks!

    Martin

  • Hi Prabindh,

    I'm running into the same issue as originally posted by Maximiliano - I'm unable to use "-platform eglfs" for any qt5 example application. Example: 

    ./analogclock -platform eglfs -plugin tslib
    evdevtouch: Using device /dev/input/event1
    min X: 0 max X: 0
    min Y: 0 max Y: 0
    min pressure: 0 max pressure: 4095
    device name: ti-tsc
    Protocol type A
    EGL Error : Could not create the egl surface: error = 0x3003

    Aborted (core dumped)

    Using "-platform minimalegl" works but then touch input does not. I'm running the offical QT 5.0.0 release with latest TI Graphics SDK on the TMDSSK3358 board.

    From this forum thread it seems you guys went from using minimalegl to using eglfs but it is not clear how you did so - I assume some sort of fix was involved?

    Any help is appreciated.

    Thanks.

    Br, Martin

    Ps.: Here is my gfx_check.sh output:

    WSEGL settings
    [default]
    WindowSystem=libpvrPVR2D_FRONTWSEGL.so
    #WindowSystem=libpvrPVR2D_FLIPWSEGL.so

    ------
    ARM CPU information
    Processor       : ARMv7 Processor rev 2 (v7l)
    BogoMIPS        : 718.02
    Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls
    CPU implementer : 0x41
    CPU architecture: 7
    CPU variant     : 0x3
    CPU part        : 0xc08
    CPU revision    : 2

    Hardware        : am335xevm
    Revision        : 0000
    Serial          : 0000000000000000
    ------
    SGX driver information
    Version SGX_DDK_Linux_CustomerTI sgxddk 19 1.9@2188537 (release) /opt/nocrypt/projects/tmdssk3358/
    build/work/cross/ti-graphics-sdk/src/ti-graphics-sdk-4.08.00.02/GFX_Linux_KM
    System Version String: SGX revision = 1.2.5
    ------
    Framebuffer settings

    mode "480x272-57"
        # D: 9.091 MHz, H: 16.992 kHz, V: 57.021 Hz
        geometry 480 272 480 544 32
        timings 110000 43 8 12 4 4 10
        rgba 8/16,8/8,8/0,8/24
    endmode

    Frame buffer device information:
        Name        : DA8xx FB Drv
        Address     : 0x8f000000
        Size        : 1105920
        Type        : PACKED PIXELS
        Visual      : TRUECOLOR
        XPanStep    : 0
        YPanStep    : 1
        YWrapStep   : 0
        LineLength  : 1920
        Accelerator : No
    ------
    Rotation settings
    0
    ------
    Kernel Module information
    Module                  Size  Used by
    omaplfb                10919  0
    pvrsrvkm              169885  1 omaplfb
    ------
    Boot settings
    console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait vram=16M ip=none
    ------
    Linux Kernel version
    Linux tmdssk3358 3.2.0 #1 Sat Jan 26 17:40:11 CET 2013 armv7l GNU/Linux
  • Anyone know what the fix was for this issue?  I'm encountering the same problem.

  • Martin - sorry for the delay. Please check the below link for the fix for the eglfs, that includes input support and cursor. I am working with Qt5 team to get mainline,

    https://github.com/prabindh/qt-configs/tree/master/qt5_1.0_Feb13

  • Maxim - If you want to use the latest Qt5, you can use the below patch:

    https://github.com/prabindh/qt-configs/tree/master/qt5_1.0_Feb13

  • Hi Prabindh

    I'm glad to hear from you again.

    I will check the patch in coming days.

    Thanks!

    Best regards,

    Maxi

  • Hi Prabindh,

    Thank you very much for the patch - I can confirm that it works with QT 5.0.1.

    Running QT5's examples/opengl/hellogl_es2 I'm getting about 100 fps on the TMDSSK3358 at 480x272. I'm running a fully optimized GNU/Linux stack using hardfloat / neon enabled gcc 4.7.2 and glibc 2.17.

    Also, as expected, all the input plugins work in combination with "-platform eglfs".

    Good stuff! :)

    Br, Martin

  • Glad it worked Martin. Please continue testing and get back if there are issues,

    regards

    Prabindh

  • Hi Prabindh,

    when I run the hellogl_es2 example apps i only get 58 fps and has the error below, can you point me to where to debug this?  I am using eglfs as the default qpa.

    Thanks,

    Johny.

    ./hellogl_es2
    evdevtouch: Using device /dev/input/event0
    min X: 0 max X: 0
    min Y: 0 max Y: 0
    min pressure: 0 max pressure: 0
    device name: TSC2007 Touchscreen
    Protocol type A
    QTsLibMouseHandler "tslib" "/dev/input/event0"
    This plugin does not support propagateSizeHints()
    This plugin does not support setParent!
    This plugin does not support setParent!
    This plugin does not support setParent!
    This plugin does not support setParent!
    This plugin does not support setParent!
    This plugin does not support setParent!
    This plugin does not support setParent!
    This plugin does not support propagateSizeHints()
    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QOpenGLContext::swapBuffers() called with non-opengl surface
    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QOpenGLContext::swapBuffers() called with non-opengl surface
    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QOpenGLContext::swapBuffers() called with non-opengl surface
    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QOpenGLContext::swapBuffers() called with non-opengl surface
    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QOpenGLContext::swapBuffers() called with non-opengl surface
    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QOpenGLContext::swapBuffers() called with non-opengl surface
    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QOpenGLContext::swapBuffers() called with non-opengl surface
    QEGLPlatformContext::makeCurrent: eglError: 3009, this: 0x5b090

    QOpenGLContext::swapBuffers() called with non-opengl surface

  • Animation is limited by LCD refresh rate ~ 60 fps. Do you see rotating logo on the screen ?

  • Hi Prabindh,

    thanks for your reply.  The logo is rotating and I was able to run other app as well.. Like calculator .  I was just curious on the frame rate because on the same system the hellogl_es2 run at 100 fps with qt 4.7 and powervr driver.  Just want to make sure that I am not missing anything because of the eglError it throw.

    another question, when using qmlscene it segfault in the QMLEngine intialization.  How do I go about debugging this problem?

    Thanks again,

    Johny.

  • QMLScene works fine for me. What platform (eglfs?) are you using ?  A backtrace would show where it crashes.

    >> using qmlscene it segfault in the QMLEngine intialization

  • Hi Prabindh,

    It segfault during this call: QQmlEngine engine;

    I don't really know what to look for, I am running eglfs on dm814x board with Graphic SDK 4.06.

    Thanks a lot for you help.

    Johny.

    open("animation/pathanimation/pathanimation.qml", O_RDONLY|O_LARGEFILE|0x80000) = 12
    fcntl64(12, F_SETFD, FD_CLOEXEC) = 0
    fstat64(12, {st_mode=S_IFREG|0644, st_size=3407, ...}) = 0
    fstat64(12, {st_mode=S_IFREG|0644, st_size=3407, ...}) = 0
    read(12, "/*******************************"..., 16384) = 3407
    read(12, "", 12977) = 0
    close(12) = 0
    write(2, "Johny - defile translator\n", 26Johny - defile translator
    ) = 26
    write(2, "Johny - define qml engine\n", 26Johny - define qml engine
    ) = 26
    mmap2(NULL, 8388608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x476e3000
    mprotect(0x476e3000, 4096, PROT_NONE) = 0
    clone(child_stack=0x47ee1fe8, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x47ee24d8, tls=0x47ee2930, child_tidptr=0x47ee24d8) = 32189
    futex(0x3822c, 0x80 /* FUTEX_??? */, 1) = 0
    futex(0x38210, 0x80 /* FUTEX_??? */, 2) = 0
    futex(0x38210, 0x81 /* FUTEX_??? */, 1) = 0
    futex(0x41393a8c, 0x81 /* FUTEX_??? */, 42) = 0
    futex(0x35ae0, 0x80 /* FUTEX_??? */, 3) = 0
    futex(0x35ae0, 0x81 /* FUTEX_??? */, 1) = 0
    lstat64("/usr", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
    lstat64("/usr/qml", 0xbe940428) = -1 ENOENT (No such file or directory)
    lstat64("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat64("/home/root", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    gettimeofday({1363921267, 230979}, NULL) = 0
    gettid() = 32187
    mmap2(0x4f5a0000, 33554432, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x4f5a0000
    munmap(0x4f5a0000, 10878976) = 0
    munmap(0x51000000, 5898240) = 0
    mmap2(0x50700000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x50700000
    mmap2(0x3d20a000, 196608, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x3d20a000
    mmap2(0x2b44a000, 1048576, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2b44a000
    mmap2(0x2b44a000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2b44a000
    mmap2(0x3d220000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3d220000
    brk(0x80000) = 0x80000
    mmap2(0x28491000, 1216512, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x28491000
    munmap(0x28491000, 454656) = 0
    munmap(0x28529000, 593920) = 0
    mmap2(0x28500000, 163968, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x28500000
    mmap2(0x5047b000, 1347584, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x47f7a000
    munmap(0x47f7a000, 548864) = 0
    munmap(0x48049000, 499712) = 0
    mmap2(0x48000000, 295040, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x48000000
    mmap2(0x363de000, 1282048, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x363de000
    munmap(0x363de000, 139264) = 0
    munmap(0x36439000, 909312) = 0
    mmap2(0x36400000, 229504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x36400000
    mmap2(0x24fb1000, 1486848, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x24fb1000
    munmap(0x24fb1000, 323584) = 0
    munmap(0x2506b000, 724992) = 0
    mmap2(0x25000000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x25000000
    mprotect(0x25009000, 4096, PROT_NONE) = 0
    mmap2(0x2500a000, 393216, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2500a000
    mprotect(0x2506a000, 4096, PROT_NONE) = 0
    syscall_983042(0x2500a000, 0x2510a000, 0, 0x100000, 0x3, 0xbe940584, 0xbe9404e8, 0xf0002, 0x2500a000, 0x19038, 0xbe9404e8, 0x2500a070, 0, 0xbe9402e4, 0x4183b670, 0x4187ef60, 0x20000010, 0x2500a000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = 0
    --- SIGSEGV (Segmentation fault) @ 0 (0) ---
    +++ killed by SIGSEGV +++
    Process 32187 detached

  • I meant a gdb backtrace.  Also, what toolchain is being used, and what root filesystem ?

  • Hi Prabindh,

    Cannot get a back trace with gdb.  When it get the segfault, gdb program just exit.  I produce a core dump but cannot get anything out of it either.

    I am using the  arm-2009q1-203-arm-none-linux-gnueabi.bin toolchain, this is code sourcery with gcc 4.3.  It running on our own rootfs with kernel 2.67 build with OE.

    What can I do?

    Johny.

  • Your kernel, and toolchain are really outdated. Can you possibly try with gcc4.6, and with a later kernel ?

  • Hi Prabindh,

    Some of the component in OE won't build with the linaro toolchain (arm-linux-gnueabi) the one you are using to compile qt5 on your blog.

    I tried to use ti-sdk-am335x-evm which use gcc 4.5.3 but it still segfault.  

    I am going to try to compile pyqt against qt5 to see if our apps will run or not since we use pyqt.  Have you tried compile pyqt 4.10 with qt5?

    Thanks,

    Johny.

  • Hi Prabindh,

    I hope you can help me narrow the problem with this new information.

    qmlscene segfault in this file: src//qml/qml/v8/qv8engine.cpp

     m_context = (ownership == CreateNewContext) ? v8::Context::New() : v8::Persistent<v8::Context>::New(v8::Context::GetCurrent());

    specifically in the v8::Context::New()

    Can you help?

    Thanks,

    Johny.

  • Hi Prabindh,

    I finally got gdb working and has a back trace, wonder if you could explain what is happening.  I am no familiar with the code so any help would be great.

    thanks, Johny.

    Program received signal SIGSEGV, Segmentation fault.
    0x417f80b0 in v8::internal::Deserializer::Deserialize (this=0xbed3e400)
    at ../3rdparty/v8/src/objects-inl.h:2427
    2427 ../3rdparty/v8/src/objects-inl.h: No such file or directory.
    in ../3rdparty/v8/src/objects-inl.h

    (gdb) bt
    #0 0x417f80b0 in v8::internal::Deserializer::Deserialize (this=0xbed3e400)
    at ../3rdparty/v8/src/objects-inl.h:2427
    #1 0x417155b4 in v8::internal::Isolate::Init (this=0x19038, des=0xbed3e400)
    at ../3rdparty/v8/src/isolate.cc:1839
    #2 0x417fa8e0 in v8::internal::Snapshot::Deserialize (
    content=<value optimized out>, len=<value optimized out>)
    at ../3rdparty/v8/src/snapshot-common.cc:43
    #3 0x417fa978 in v8::internal::Snapshot::Initialize (
    snapshot_file=<value optimized out>)
    at ../3rdparty/v8/src/snapshot-common.cc:56
    #4 0x4162f784 in InitializeHelper () at ../3rdparty/v8/src/api.cc:296
    #5 0x41632920 in EnsureInitializedForIsolate (isolate=0x0,
    location=0x418ae1c8 "v8::Context::New()") at ../3rdparty/v8/src/api.cc:315
    #6 0x4164b158 in v8::Context::New (extensions=0x0, global_template=
    {val_ = 0x0}, global_object={val_ = 0x0})
    at ../3rdparty/v8/src/api.cc:4479
    #7 0x406379c4 in QV8Engine (this=0x369e0, qq=<value optimized out>,
    ownership=<value optimized out>) at qml/v8/qv8engine.cpp:156
    #8 0x4062ca38 in QJSEngine (this=0xbed3e9b8, dd=<value optimized out>,
    parent=<value optimized out>) at qml/v8/qjsengine.cpp:193
    #9 0x405626dc in QQmlEngine (this=0xbed3e9b8, parent=<value optimized out>)
    at qml/qqmlengine.cpp:754
    #10 0x0000d128 in main (argc=0, argv=<value optimized out>) at main.cpp:466