orcc / orcc

Open RVC-CAL Compiler
http://orcc.sf.net
33 stars 15 forks source link

(C) Smarter scheduler (Mesh topology) + mapping file => Segfault #45

Closed alorence closed 11 years ago

alorence commented 11 years ago

When an application is built with the C backend and the Smarter Scheduler option enabled (w/ Mesh topology), the binary produced works only on mono-core.

If a valid mapping file (*.xcf) is given as command-line option to the decoder, and if it defines a mapping for more than 1 core, application crash at startup displaying a "Segmentation fault".

This issue has been reproduced with HEVC and AVC (part10 CBP)

Helcaraxan commented 11 years ago

A small example of a gdb run with the Smarter Scheduler option enabled and a custom mapping (.xcf file below). The used code is the HEVC implementation from orc-apps with the C backend run on the RVC "Top_mpegh_part2_main.xdf" top-level XDF.

System configuration

OS - Fedora 17 (software up-to-date @ 24/04/13) Processor - Intel Xeon quad-core HT (8 virtual cores) @ 2.40GHz

gdb output

(gdb) r -i BasketballDrive_1920x1080_50_qp22.bin -m ../src/Top_mpegh_part2_main.xcf 
Starting program: /work1/dvanamst/HEVC/orcHEVCcompilation/bin/Top_mpegh_part2_main -i BasketballDrive_1920x1080_50_qp22.bin -m ../src/Top_mpegh_part2_main.xcf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7ffff7fd3700 (LWP 27863)]
[New Thread 0x7ffff77d2700 (LWP 27864)]
[New Thread 0x7ffff6fd1700 (LWP 27865)]
[New Thread 0x7ffff67d0700 (LWP 27866)]
[New Thread 0x7ffff5fcf700 (LWP 27867)]
[New Thread 0x7ffff57ce700 (LWP 27868)]
[New Thread 0x7ffff4fcd700 (LWP 27869)]
[New Thread 0x7fffeffff700 (LWP 27870)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffeffff700 (LWP 27870)]
0x000000000040cf10 in sched_add_schedulable ()
(gdb) bt
#0  0x000000000040cf10 in sched_add_schedulable ()
#1  0x000000000040e54b in display_scheduler ()
#2  0x0000000000409aad in scheduler ()
#3  0x0000003afca07d14 in start_thread (arg=0x7fffeffff700) at pthread_create.c:309
#4  0x0000003afbef168d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

XCF file

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
 <Partitioning>
    <Partition id="1">
        <Instance id="HevcDecoder_xIT_IT4x4_IT4x4_1d_0"/>
        <Instance id="HevcDecoder_xIT_IT4x4_Transpose4x4_0"/>
        <Instance id="HevcDecoder_xIT_IT4x4_IT4x4_1d_1"/>
        <Instance id="HevcDecoder_xIT_IT4x4_Transpose4x4_1"/>
        <Instance id="HevcDecoder_xIT_IT8x8_IT8x8_1d_0"/>
        <Instance id="HevcDecoder_xIT_IT8x8_Transpose8x8_0"/>
        <Instance id="HevcDecoder_xIT_IT8x8_IT8x8_1d_1"/>
        <Instance id="HevcDecoder_xIT_IT8x8_Transpose8x8_1"/>
        <Instance id="HevcDecoder_xIT_IT16x16_IT16x16_1d_0"/>
        <Instance id="HevcDecoder_xIT_IT16x16_Transpose16x16_0"/>
        <Instance id="HevcDecoder_xIT_IT16x16_IT16x16_1d_1"/>
        <Instance id="HevcDecoder_xIT_IT16x16_Transpose16x16_1"/>
        <Instance id="HevcDecoder_xIT_IT32x32_IT32x32_1d_0"/>
        <Instance id="HevcDecoder_xIT_IT32x32_Transpose32x32_0"/>
        <Instance id="HevcDecoder_xIT_IT32x32_IT32x32_1d_1"/>
        <Instance id="HevcDecoder_xIT_IT32x32_Transpose32x32_1"/>
    </Partition>
    <Partition id="2">
        <Instance id="HevcDecoder_IntraPrediction"/>
        <Instance id="HevcDecoder_InterPrediction"/>
    </Partition>
    <Partition id="3">
        <Instance id="HevcDecoder_LCU_reord"/>
        <Instance id="HevcDecoder_LCU_reord2"/>
    </Partition>
    <Partition id="4">
        <Instance id="HevcDecoder_xIT_IT_Splitter"/>
        <Instance id="HevcDecoder_xIT_IT_Merger"/>
        <Instance id="HevcDecoder_xIT_invDST4x4_1st"/>
        <Instance id="HevcDecoder_xIT_invDST4x4_2nd"/>
        <Instance id="HevcDecoder_xIT_Block_Merger"/>
    </Partition>
    <Partition id="5">
        <Instance id="HevcDecoder_feeder"/>
        <Instance id="HevcDecoder_DecodingPictureBuffer"/>
    </Partition>
    <Partition id="6">
        <Instance id="Source"/>
    </Partition>
    <Partition id="7">
        <Instance id="HevcDecoder_Algo_Parser"/>
        <Instance id="HevcDecoder_SelectCU"/>
        <Instance id="HevcDecoder_GenerateInterInfo_GenerateRefList"/>
        <Instance id="HevcDecoder_GenerateInterInfo_MvComponentPred"/>
    </Partition>
    <Partition id="8">
        <Instance id="display"/>
    </Partition>
</Partitioning>

<!-- Other useful informations related to any element of the instanciated model can be printed here -->
</Configuration>
hyviquel commented 11 years ago

I'm not able to reproduce the bug with the development version of Orcc (Ubuntu 13.04 / Same app / Same xcf). @Helcaraxan I suppose you have tried the stable release, right ?

Helcaraxan commented 11 years ago

Yes. I tried the stable release indeed.

alorence commented 11 years ago

I still reproduce this bug. It seems to work with Smarter scheduler / Ring topology, but it segfault when I generate application with Smarter scheduler / Mesh topology. I update issue description.

Helcaraxan commented 11 years ago

My initial report also concerned the mesh topology (my mistake that I did not indicate it in my report).

hyviquel commented 11 years ago

Right, I get the segfault with the mesh...