Meddelande

Minska
No announcement yet.

Segmentation fault / Valgrind for Armv7

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Segmentation fault / Valgrind for Armv7

    Hej!

    Hoppas jag valde rätt forum för denna fråga...

    Jag har problem med ett program som kraschar pga ett segmenteringsfel. Programmet består av en sammanslagning från flera användare vilket gör det väldigt svårt att felsöka då jag inte har någon aning om vad som egentligen orsakar kraschen. Gdb ger mig inga svar så därför vill jag testa Valgrind.

    Jag lyckas dock inte installera Valgrind riktigt... Min target machine är en Armv7:a (får följande när jag kör uname -a: Linux am335x-evm 3.2.0501010-000045RXX-1.2.0.818 #2 PREEMPT Wed Aug 7 13:48:54 CDT 2013 armv7l unknown) som saknar pakethanterare. Har korskompilerat Valgrind 3.8.1 och kan starta det men får följande fel:

    ...
    ==9288== Memcheck, a memory error detector
    ==9288== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
    ==9288== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
    ==9288== Command: ./tempo
    ==9288==

    valgrind: Fatal error at startup: a function redirection
    valgrind: which is mandatory for this platform-tool combination
    valgrind: cannot be set up. Details of the redirection are:
    valgrind:
    valgrind: A must-be-redirected function
    valgrind: whose name matches the pattern: memcpy
    valgrind: in an object with soname matching: ld-linux.so.3
    valgrind: was not found whilst processing
    valgrind: symbols from the object with soname: ld-linux.so.3
    valgrind:
    valgrind: Possible fixes: (1, short term): install glibc's debuginfo
    valgrind: package on this machine. (2, longer term): ask the packagers
    valgrind: for your Linux distribution to please in future ship a non-
    valgrind: stripped ld.so (or whatever the dynamic linker .so is called)
    valgrind: that exports the above-named function using the standard
    valgrind: calling conventions for this platform. The package you need
    valgrind: to install for fix (1) is called
    valgrind:
    valgrind: On Debian, Ubuntu: libc6-dbg
    valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo
    valgrind:
    valgrind: Cannot continue -- exiting now. Sorry.

    Så libc6-dbg behövs men jag lyckas inte installera det... Jag har tankat ner paketet från http://www.emdebian.org/crush/search...=&distro=lenny och packat upp det manuellt och överfört till min target machine men får bara detta: /opt/valgrind/bin/valgrind: error while loading shared libraries: /usr/lib/debug/libc.so.6: ELF file OS ABI invalid när jag försöker köra Valgrind då.

    Jag är inte den bästa på Linux och behöver verkligen Valgrind. Alla tips om hur man kan installera och köra Valgrind på en Armv7:a tas gladeligen emot!

  • #2
    Segmentation fault

    Hej,

    Skrev igår ett inlägg om Valgrind for Armv7 som ingen svarat på hittills så jag gör ett nytt försök fast med en annan infallsvinkel.

    Person X har skrivit ett program och verifierat att det fungerar hos honom. När jag tar källkoden till det programmet och kompilerar hos mig så lyckas jag bygga programmet men när jag startar det så kraschar det efter bara några sekunder pga segfault. Jag vet att vi har samma kod så vad kan orsaka ett sådant segfault? Kan person X ha andra kompileringsflaggor aktiverade eller något liknande? Programmet är skrivet för Armv7-arkitektur och både jag och X jobbar mot samma typ av hårdvara.

    Tack

    Kommentera


    • #3
      Jag har slagit ihop trådarna eftersom de handlar om samma problem.

      Får du ut någon information om kraschen, som en registerdump eller en stackdump? Utifrån det borde du kunna avgöra var i programmet fel sker utifrån symbolerna. Exakt hur du gör det vet jag inte på rak arm. Vad är det för storts plattform? Om det är en embedded-plattform så finns det säkert en serielina som du kanske kan använda om det är så att nätverksstacken slutar funka vid segfaulten. Se dock upp eftersom sådana serieportar i regel är lågspänning och skulle gå sönder direkt om du kopplade det direkt till en "vanlig" serieport som kör med +/-12 V.

      Kompileringsflaggor kan absolut ha något med saken att göra, och även vilken version av kompilatorn du använder. Kompilerar du med -g för att skapa debuginformation? Har du provat att köra -O0 bara som en första sanity check för att se om optimeringsflaggan är vad som skapar problemet? Tänk dock på att programmet går mycket långsammare och om samma problem finns kvar så kan det ta längre tid innnan det smäller.
      Gameboy Genius - Foto: Gatukonst och elektronikporr
      Internklippning:
      1) Snaggning av fångar.
      2) Klippning frisörer emellan.

      Kommentera

      Working...
      X