Problème de libération de mémoire

2 sujets de 1 à 2 (sur un total de 2)

  • Rmais96

      #6363

      Bonjour à tous,

      J’ai un programme qui ne semble pas libérer correctement la mémoire. Le système (MOS2.1) affiche dans les logs des exceptions du type :


      TLSF_FreeMem: ptr 0x297fdb88 wrong size 13 (memory was allocated for 602975385-602975400 bytes)

      Task 0x238c2e00 Name 0x298265ec Type 13 Pri 0

      Flags 0x8 State 2 IDNestCnt -1 TDNestCnt -1

      SigAlloc 0xc000ffff SigWait 0x10000000 SigRecvd 0x00800100 SigExcept 0x00000000

      ExceptCode 0x10100130 ExceptData 0x00000000 TrapCode 0x10100128 TrapData 0x00000000

      Switch 0x00000000 Launch 0x00000000 UserData 0x00000000

      SPLower 0x289f760c SPUpper 0x289f860c SPReg 0x289f85a4


      ETask 0x22e34314

      MemPool 0x25966f18 PPCLibData 0x00000000

      PPCSPLower 0x2373951c PPCSPUpper 0x23741510

      PPCRegFrame 0x23741030

      Private[] 0x00000000 0x00000000 0x00000000 0x00000000

      EmulHandle 0x00000000


      EmulHandle 0x23741420 Type 0x00000004 Flags 0x00000001


      SRR0 0x10125b90 SRR1 0x02007030

      LR 0x101163d8 CTR 0x25ab8754

      CR 0x28002242 XER 0x20000000

      GPR[00] 25ab75c8 2373fdd0 23741420 00000001 23740448 297c3c90 237404d0 00000069

      GPR[08] 29818f10 28a046a2 23740458 28a046a2 28002244 28a052c0 00000019 00000019

      GPR[16] 08b5e333 23740c90 00000000 238c3ee4 238c2ee4 238c3ee0 0000000a 08e30bb9

      GPR[24] 20001948 22e34314 238c2e00 00000000 10020010 10100000 237401d8 23741030

      CTR -> Rival.debugger Hunk 1 Offset 0x0004e6cc

      PPCStackFrame History:

      StackFrame[0].LR-> Address 0x10124554

      StackFrame[-1].LR-> Address 0x10110198

      StackFrame[-2].LR-> Address 0x1010c140

      StackFrame[-3].LR-> Address 0x10110efc

      StackFrame[-4].LR-> Address 0x25a9a3a8 -> Rival.debugger Hunk 1 Offset 0x00030320

      StackFrame[-5].LR-> Address 0x25a6ac24 -> Rival.debugger Hunk 1 Offset 0x00000b9c

      StackFrame[-6].LR-> Address 0x25a746bc -> Rival.debugger Hunk 1 Offset 0x0000a634

      StackFrame[-7].LR-> Address 0x25a73ee8 -> Rival.debugger Hunk 1 Offset 0x00009e60

      StackFrame[-8].LR-> Address 0x25a739dc -> Rival.debugger Hunk 1 Offset 0x00009954

      StackFrame[-9].LR-> Address 0x25a72598 -> Rival.debugger Hunk 1 Offset 0x00008510

      StackFrame[-10].LR-> Address 0x25a6a560 -> Rival.debugger Hunk 1 Offset 0x000004d8

      StackFrame[-11].LR-> Address 0x25a6a3f0 -> Rival.debugger Hunk 1 Offset 0x00000368

      StackFrame[-12].LR-> Address 0x25a6a324 -> Rival.debugger Hunk 1 Offset 0x0000029c

      StackFrame[-13].LR-> Address 0x1029d1e0

      StackFrame[-14].LR-> Address 0x102a1d0c

      StackFrame[-15].LR-> Address 0x102a1a04

      StackFrame[-16].LR-> Address 0x10312304

      StackFrame[-17].LR-> Address 0x1030e558

      StackFrame[-18].LR-> Address 0x1030d6d4

      StackFrame[-19].LR-> Address 0x1030d0f8

      StackFrame[-20].LR-> Address 0x10293950

      Full PPC mode: Last 68k context

      PC 87654321 SR 0008

      Dn[0] 0000000d 237403a0 0000000f 0a5ff6f8 08dd010c fffffffe 22d6de8d 23740880

      An[0] 238c2e00 297fdb88 23740008 00000000 00000019 00000019 20001948 289f8604

      Stack: 0x289f8604

      A7[-32] 22d12920 20bd6d7c 287dfe00 22d12620

      A7[-16] 20b4ed94 28888008 00000000 1132b820

      A7[000] 00001000 238c3ee0 00000000 289f75e8

      Last saved PPCThread State:

      SRR0 0x10125c2c SRR1 0x200f030 LR 0x10116594 R1 0x237403b0

      GPR[00] 25ab75c8 237403b0 23741420 00000001 23740448 297c3c90 237404d0 00000069

      GPR[08] 29818f10 28a046a2 23740458 28a046a2 28002244 28a052c0 00000019 00000019

      GPR[16] 08b5e333 23740c90 00000000 238c3ee4 238c2ee4 238c3ee0 0000000a 00000004

      GPR[24] ffffffff 20001af0 20001aec 00000000 ffffffff 88002242 237403b8 20001948

      CTR -> Rival.debugger Hunk 1 Offset 0x0004e6cc


      SegList 0x08dd68e2 GlobVec 0x2002aba4

      StackBase 0x0a27dd83 StackSize 0x00001000

      TaskNum 0x00000005 Result2 0x00000000

      CurrentDir 0x09caeca8 CIS 0x08b7b695

      COS 0x08b8721d CES 0x08b75c51

      CLI 0x08dd6a1d ReturnAddr 0x289f8604

      PktWait 0x00000000 WindowPtr 0x00000000

      HomeDir 0x0965c730 Flags 0x00000044

      ExitCode 0x00000000 ExitData 0x00000000

      Arguments 0x297c1244 ShellPrivate 0x00000000

      NEW_Alert: MsgPort 0x237405b0

      NEW_Alert: Task 0x238c2e00

      NEW_Alert: Msg 0x23740590

      NEW_Alert: AlertMsgPort 0x200c84e0

      NEW_Alert: Send Msg

      NEW_Alert: Wait Msg

      NEW_Alert: Replied Msg 0x23740590

      NEW_Alert: continue


      Dans cet exemple, la libération concerne une zone mémoire de 3 ULONG, soit 12 octets. L’exception semble indiquer une incohérence entre ce qui a été alloué et ce qui est libéré (« wrong size 13 » et « 602975385-602975400 bytes »), mais cela ne correspond pas à la réalité et je ne vois pas d’où peut provenir le problème à part dans le système de détection d’erreur mémoire.

      Savez-vous comment il faut interpréter ce type d’exception pour résoudre le problème ?

      Merci d’avance.

      henes

        #104227

        Utiliser le memtracker.

      2 sujets de 1 à 2 (sur un total de 2)

      • Vous devez être connecté pour répondre à ce sujet.

      Forums AmigaOS, MorphOS et AROS Développement Problème de libération de mémoire

      Amiga Impact