Hello everyone! I got it working.
The issue is in RTOS_SetThreadReg(). For some reason g_plugin_priv.tcbinfo is NULL. I added a simple check: if (g_plugin_priv.tcbinfo == 0) { return -EINVAL; } And now it works correctly. I can submit a PR, however I have no idea how this plugin works, and thus I do not know whether this value is expected to be NULL (and thus a check is missing), or whether there is any other underlying issue. Mr. Xiang, can you please have a look at this and comment? On Thu, Jun 23, 2022 at 6:11 PM Xiang Xiao <xiaoxiang781...@gmail.com> wrote: > We document the JLinker plugin usage, but it's the Chinese version only. > Pengxiang, please prepare a document. > In the meantime, Fotis, could you attach gdb to JLinkGDBServer and print > the backtrace when it crashes, so we can identify the reason quickly. > > > On Thu, Jun 23, 2022 at 10:36 PM Alan Carvalho de Assis <acas...@gmail.com > > > wrote: > > > Please describe all the steps you are doing and such way everybody can > > reproduce yet (same way I did in previous email). > > > > I don't think a library compile to Ubuntu will work on Fedora. > > > > Xiang, do you have a documentation about the JLink integration? BTW, > > any news about the guy/gal Xiaomi was contracting to write better > > documentation to NuttX ? > > > > BR, > > > > Alan > > > > On 6/23/22, Fotis Panagiotopoulos <f.j.pa...@gmail.com> wrote: > > > I tried your instructions. > > > The build fails on a clean repository too. > > > > > > I then tried a newer version of Ubuntu (as a Docker container, I do not > > > have access to any other Ubuntu machines). > > > This time the build succeeded. > > > > > > However I haven't managed to debug the application from within this > > Docker > > > container. > > > > > > I took the successfully built plug-in, and used it on my Fedora > machine. > > > Again, it crashes in the same way. > > > > > > > > > On Thu, Jun 23, 2022 at 5:06 PM Alan Carvalho de Assis < > > acas...@gmail.com> > > > wrote: > > > > > >> Hi Fotis, > > >> > > >> I'm using Ubuntu 20.04 and I can confirm it is working fine, I don't > > >> need to add -fPIC. > > >> > > >> Please try a clear repository, I will do it here step-by-step on /tmp > > >> to removed after next reboot: > > >> > > >> $ cd /tmp/ > > >> $ git clone https://github.com/apache/incubator-nuttx nuttx > > >> $ git clone https://github.com/apache/incubator-nuttx-apps apps > > >> $ cd nuttx/ > > >> $ make -C tools -f Makefile.host all > > >> $ ls -l tools/jlink* > > >> -rwxrwxr-x 1 alan alan 17144 jun 23 11:02 tools/jlink-nuttx > > >> -rw-rw-r-- 1 alan alan 16804 jun 23 11:01 tools/jlink-nuttx.c > > >> > > >> I didn't test it with JLinkGDBServer, but at least I can tell you it > > >> is compiling fine. > > >> > > >> BR, > > >> > > >> Alan > > >> > > >> On 6/23/22, Fotis Panagiotopoulos <f.j.pa...@gmail.com> wrote: > > >> >> Ahhh, so it is your Fedora 36 issue, hahaha > > >> > > > >> > No, it is not. > > >> > > > >> > I just tried on Ubuntu 18, and I got the exact same result. > > >> > > > >> > Build fails with the same error. I added the -fPIC flag, and the > build > > >> > succeeded. > > >> > Then I tried to debug the firmware with JLink and GDB crashes during > > >> > init > > >> > with a SEGFAULT. > > >> > > > >> > Just like on Fedora. > > >> > > > >> > So I guess, this is a problem with the plug-in itself? > > >> > > > >> > Those that have managed to use the plug-in successfully, what is the > > >> > version of JLinkGDBServer ? > > >> > Mine is V7.54c. > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > On Thu, Jun 23, 2022 at 1:50 AM Alan Carvalho de Assis < > > >> acas...@gmail.com> > > >> > wrote: > > >> > > > >> >> Ahhh, so it is your Fedora 36 issue, hahaha > > >> >> > > >> >> Here on Ubuntu "make -C tools -f Makefile.host all" works fine. > > >> >> > > >> >> It created the jlink-nuttx.so file. > > >> >> > > >> >> BR, > > >> >> > > >> >> Alan > > >> >> > > >> >> On 6/22/22, Fotis Panagiotopoulos <f.j.pa...@gmail.com> wrote: > > >> >> > Yes I enabled CONFIG_DEBUG_TCBINFO. > > >> >> > (When disabled, debugging works normally but without being > > >> >> > thread-aware). > > >> >> > > > >> >> > It seems that it is either a bug in the plugin itself, or > something > > >> >> > is > > >> >> > wrong with my build. > > >> >> > > > >> >> > If it matters, I am using Fedora 36 with gcc (GCC) 12.1.1 > 20220507 > > >> (Red > > >> >> Hat > > >> >> > 12.1.1-1) > > >> >> > > > >> >> > Maybe someone can provide me with a pre-build .so file to test if > > >> >> > this > > >> >> > is > > >> >> > the cause? > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > On Wed, Jun 22, 2022 at 10:30 PM Xiang Xiao < > > >> xiaoxiang781...@gmail.com> > > >> >> > wrote: > > >> >> > > > >> >> >> Did you enable CONFIG_DEBUG_TCBINFO in your defconfig: > > >> >> >> incubator-nuttx/Kconfig at master ยท apache/incubator-nuttx > > >> >> >> (github.com) > > >> >> >> < > > >> >> > > >> > > > https://github.com/apache/incubator-nuttx/blob/master/Kconfig#L1857-L1863 > > >> >> >> > > > >> >> >> The plugin needs the g_tcbinfo to know the critical offset of > the > > >> >> >> field > > >> >> >> in > > >> >> >> tcb_s structure. > > >> >> >> > > >> >> >> On Thu, Jun 23, 2022 at 2:10 AM Fotis Panagiotopoulos > > >> >> >> <f.j.pa...@gmail.com > > >> >> >> > > > >> >> >> wrote: > > >> >> >> > > >> >> >> > Hello, > > >> >> >> > > > >> >> >> > I am in need of debugging NuttX in a thread-aware fashion, as > I > > >> >> >> > still > > >> >> >> hit a > > >> >> >> > dead-lock in networking that I haven't managed to track down > > yet. > > >> >> >> > > > >> >> >> > I am using a custom target, based on the STM32F427VI and JLink > > as > > >> >> >> > the > > >> >> >> > debugger. > > >> >> >> > > > >> >> >> > I see that there is a plug-in for JLink GDB that was added in > > >> #4810. > > >> >> >> > Unfortunately, I never got this working. I commented on the > PR, > > >> >> >> > but > > >> >> >> > I > > >> >> >> > got > > >> >> >> > ignored. > > >> >> >> > > > >> >> >> > So: > > >> >> >> > > > >> >> >> > 1. I cannot build the plug-in. > > >> >> >> > Running: > > >> >> >> > > > >> >> >> > make -C tools -f Makefile.host all > > >> >> >> > > > >> >> >> > I get: > > >> >> >> > > > >> >> >> > /usr/bin/ld: /tmp/cclxEqhk.o: relocation R_X86_64_32 against > > >> >> >> > `.rodata.str1.8' can not be used when making a shared object; > > >> >> recompile > > >> >> >> > with -fPIC > > >> >> >> > collect2: error: ld returned 1 exit status > > >> >> >> > make: *** [Makefile.host:231: jlink-nuttx.so] Error 1 > > >> >> >> > > > >> >> >> > I added the -fPIC option, and it was built successfully. > > >> >> >> > If this is actually the correct option, then I guess the > > makefile > > >> >> >> > has > > >> >> >> > to > > >> >> >> be > > >> >> >> > fixed? > > >> >> >> > > > >> >> >> > > > >> >> >> > 2. After building the plug-in with -fPIC, it crashes during > > start > > >> >> >> > with > > >> >> >> > a > > >> >> >> > segmentation fault. > > >> >> >> > > > >> >> >> > Here is an example output: > > >> >> >> > https://pastebin.com/U1tqtMND > > >> >> >> > > > >> >> >> > > > >> >> >> > Has anyone managed to use this? > > >> >> >> > Any idea what the fault may be? > > >> >> >> > > > >> >> >> > > >> >> > > > >> >> > > >> > > > >> > > > > > >