discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] constellation soft decoder


From: Miklos Maroti
Subject: Re: [Discuss-gnuradio] constellation soft decoder
Date: Mon, 16 Dec 2013 17:18:46 +0100

Hi Marcus,

> Anyway, I think Miklos is right: There is an error in calc_soft_dec in
> using the pre_diff_code even in the case that it is not set or its
> application disabled.
>
> Miklos, would you be as nice as to file a bug for that? You're the one
> who successfully diagnosed that.

Can you guys add me to the list of developers (user name: mmaroti)?
Then I can file the bug report.

In the mean time, I might be able to put together a pull request, just
fixing the calc_soft_dec code.

> (You may, btw, simply think of
> pre_diff_code simply as an index set of the constellation points)

I do not understand. It is just an extra permutation of the
constellation points. If this is so, then why do you not just permute
the constellation points, which makes everything faster. Do you have
any use case where simply permuting the constellation vector would not
achieve the same result?

I also worry about performance. Even for BPSK, QPSK and 8PSK the soft
decoding is not optimized, but could be much simpler than the general
algorithm. Same goes for QAM, but I have not looked those really
closely.

Miklos

>
> Greetings,
> Marcus
>
> On 16.12.2013 14:29, Philip Balister wrote:
>> On 12/16/2013 08:16 AM, Miklos Maroti wrote:
>>> Hi Marcus,
>>>
>>> Ok, that makes sense. It does not crash with QPSK, but it does
>>> with BPSK and 8PSK, and BPSK and 8PSK do not set the
>>> pre_diff_code. This explains why there is crash in one case and
>>> not the other. Although neither sets the apply_pre_diff_code, so
>>> even QPSK should not set pre_diff_code.
>>
>> I took a quick look in Coverity for issues in gr-digital. It flags
>> a bunch of uninitialized variables. I'll try and take a look at
>> these this week.
>>
>> There is an intermittent QA failure in some QA code and this might
>> be an explanation.
>>
>> Philip
>>
>>>
>>> I think the real problem is in constellation::calc_soft_dec. I
>>> does not check whether d_apply_pre_diff_code is set or not.
>>>
>>> (By the way, I do not understand the usefulness of pre_diff_code.
>>> Can you just permute the constellation points and get the same
>>> effect?)
>>>
>>> Miklos
>>>
>>> On Mon, Dec 16, 2013 at 1:34 PM, Marcus Müller
>>> <address@hidden> wrote: Well, after having a debug build and
>>> then adding a lot of "volatile"s into the code at the crashing
>>> function, it looks as if the d_pre_diff_code of the constellation
>>> has size 0; and thus, you can't access the 0. (read: first)
>>> element. How this could happen with a QPSK object is currently
>>> subject to my confusion. Stay tuned for more confusing facts as
>>> the code unfolds :).
>>>
>>> Greetings, Marcus
>>>
>>> On 16.12.2013 08:30, Miklos Maroti wrote:
>>>>>> Hi Marcus,
>>>>>>
>>>>>> I do not think it is a compiler bug, but something
>>>>>> uninitialized. Constellation_qpsk and
>>>>>> constellation_calcdist does not crash (I did not verify if
>>>>>> they work). However, if I generate the LUT for
>>>>>> constellation_qpsk, then it crashes.
>>>>>>
>>>>>> # uname -a Linux maroti-t410 3.11.0-14-generic #21-Ubuntu
>>>>>> SMP Tue Nov 12 17:04:55 UTC 2013 x86_64 x86_64 x86_64
>>>>>> GNU/Linux
>>>>>>
>>>>>> # gcc --version gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
>>>>>>
>>>>>> Using latest master branch of gnuradio, hash
>>>>>> 117058bac41c91, both CMAKE_BUILD_TYPE=Debug and Release
>>>>>> produces the same behavior
>>>>>>
>>>>>> # gdb `which python` core Reading symbols from
>>>>>> /usr/bin/python2.7...(no debugging symbols found)...done.
>>>>>>
>>>>>> warning: core file may not match specified executable file.
>>>>>> [New LWP 2249] [New LWP 2251] [New LWP 2240] [New LWP 2248]
>>>>>> [New LWP 2247] [New LWP 2239] [New LWP 2250]
>>>>>>
>>>>>> warning: Can't read pathname for load map: Input/output
>>>>>> error. [Thread debugging using libthread_db enabled] Using
>>>>>> host libthread_db library
>>>>>> "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was
>>>>>> generated by `python ./constellation_simulation.py'.
>>>>>> Program terminated with signal 11, Segmentation fault. #0
>>>>>> 0x00007f98dbbe01a7 in
>>>>>> gr::digital::constellation::calc_soft_dec ( this=0x48321c0,
>>>>>> sample=..., npwr=<optimized out>) at
>>>>>> /home/mmaroti/workspace/gnuradio/gr-digital/lib/constellation.cc:286
>>>>>>
>>>>>>
>>>
>>>>>>
> 286        for(int j = 0; j < k; j++) {
>>>>>>
>>>>>> i stack #0  0x00007f98dbbe01a7 in
>>>>>> gr::digital::constellation::calc_soft_dec (
>>>>>> this=0x48321c0, sample=..., npwr=<optimized out>) at
>>>>>> /home/mmaroti/workspace/gnuradio/gr-digital/lib/constellation.cc:286
>>>>>>
>>>>>>
>>>
>>>>>>
> #1  0x00007f98dbbe0f7e in gr::digital::constellation::soft_decision_maker (
>>>>>> this=0x48321c0, sample=...) at
>>>>>> /home/mmaroti/workspace/gnuradio/gr-digital/lib/constellation.cc:355
>>>>>>
>>>>>>
>>>
>>>>>>
> #2  0x00007f98dbbe94dc in
>>>>>> gr::digital::constellation_soft_decoder_cf_impl::work
>>>>>> (this=0x4fb11a0, noutput_items=8190, input_items=...,
>>>>>> output_items=...) at
>>>>>> /home/mmaroti/workspace/gnuradio/gr-digital/lib/constellation_soft_decoder_cf_impl.cc:68
>>>>>>
>>>>>>
>>>
>>>>>>
> #3  0x00007f98e1c5dd38 in gr::sync_interpolator::general_work (
>>>>>> this=0x4fb11c0, noutput_items=<optimized out>,
>>>>>> ninput_items=..., input_items=..., output_items=...) at
>>>>>> /home/mmaroti/workspace/gnuradio/gnuradio-runtime/lib/sync_interpolator.cc:67
>>>>>>
>>>>>>
>>>>>>
> You should be able to reproduce the problem quite easily, but if
>>>>>> needed I can provided a test program.
>>>>>>
>>>>>> Best, Miklos
>>>>>>
>>>>>> On Mon, Dec 16, 2013 at 7:59 AM, Marcus Müller
>>>>>> <address@hidden> wrote:
>>>>>>> Could you post the whole backtrace (as a github gist,
>>>>>>> pastebin etc)? That would be very helpful, along with
>>>>>>> information such as: Compiler (Gcc (version), VC++, clang
>>>>>>> ...), Platform (Linux, win, mac,...), architecture
>>>>>>> (x86(64), ARMv9, IBM S7390,...) and GNU Radio source
>>>>>>> version.
>>>>>>>
>>>>>>> Thanks and happy hacking, Marcus
>>>>>>>
>>>>>>> On 12/16/2013 01:05 AM, Miklos Maroti wrote:
>>>>>>>>
>>>>>>>> Hi Guys,
>>>>>>>>
>>>>>>>> Constellation soft decoder crashes for
>>>>>>>> constellation_bpsk() and constellation_8psk(). I could
>>>>>>>> not find the cause of this problem, the back trace on
>>>>>>>> my machine points to
>>>>>>>>
>>>>>>>> gnuradio/gr-digital/lib/constellation.cc:286 for(int j
>>>>>>>> = 0; j < k; j++) {
>>>>>>>>
>>>>>>>> which does not make any sense. Any idea what could go
>>>>>>>> wrong?
>>>>>>>>
>>>>>>>> Miklos
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Discuss-gnuradio mailing list address@hidden
>>>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
> _______________________________________________ Discuss-gnuradio
>>>>>>> mailing list address@hidden
>>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>> _______________________________________________ Discuss-gnuradio
>>> mailing list address@hidden
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.15 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iQEcBAEBAgAGBQJSrwVRAAoJEAFxB7BbsDrLhd8H/0q7o3KX9iCShBn/X7VehxF2
> LdR1peDL2VSqbGTmKnm6CltUs1yP7+bCAp+s6/TqTun7ticxDBSnh/0Drsc1jO2d
> 5E0UUKjjvuhdqKXfxbC/MGGSXlJ1Q1yGkkhmFvPS9ztQTT/Q3iLD8tFNshXdXlKc
> FmPpyDWFDDD741AnqM4R5cXPnwUJkPV7aIvevYyrfYbjpSiK0t4yED0LVOZywnjs
> aP2YB49qmWLpLYFAaIytcJF8cFkfumziPNQwpgndaZl8tuvwvUm7COHxXmBTdaqI
> 2IrB8gns+hR05uU9UAJdwaVI2gKGRB1hmP0MaHUxPd80ODfscTd5TAMxasBDWmE=
> =HkF/
> -----END PGP SIGNATURE-----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]