Page 1 sur 2

[RESOLU] Invalid Memory Access à la fin d'une procédure

Publié : jeu. 30/avr./2009 8:54
par Progi1984
Bonjour dans le cadre de Moebius, j'arrive à la fin du fonction ( http://code.google.com/p/moebius-pb/sou ... ep2.pb#743 ) et là, PureBasic m'annonce par débuggeur externe qu'il bloque à la ligne 744.

Ce code bloque simplement pour le build de l'userlib de l'exemple 5 : http://code.google.com/p/moebius-pb/sou ... mple_05.pb

Ce code fonctionne sans problème sous Windows.

Ce code bloque tout simplement le débuggueur intégré et ne m'annonce aucun pb.

Publié : ven. 01/mai/2009 21:45
par Ollivier
Est-ce que ce n'est pas ma fonction qui patine sous Linux?

Ollivier

Publié : dim. 03/mai/2009 20:59
par Progi1984
Négatif, je suis dans la fonction Moebius_Compile_Step2_CreateSharedFunction() et ca ne veut pas quitter.

Le log du debuggueur externe :

Code : Tout sélectionner

[Debugger]  LOG > 21:58:21  Moebius_Compile_Step1()
[Debugger]  LOG > 21:58:21  From > /tmp/Moebius/Sample_05/
[Debugger]  LOG > 21:58:21  "/media/DISK/Programs/purebasic/compilers/pbcompiler" "/home/franklin/Bureau/DD_PureBasic/Proj_Moebius/Sample_Lib/Sample_05.pb" -c -e "/tmp/Moebius/Sample_05/Sample_05"
- Feel the ..PuRe.. Power -***************
[Debugger]  LOG > 21:58:22  Moebius_Compile_Step2()
[Debugger]  LOG > 21:58:22    Load the content of purebasic.asm in memory
[Debugger]  LOG > 21:58:22    Create Functions List from Pure & User Libraries
[Debugger]  LOG > 21:58:22    Extracts information for the future creation of the DESC File
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\sFuncNameCleared > S05_FunctionTest
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncName Full> S05_FunctionTest(PrimParam.l)
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\CallingConvention > StdCall
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncDesc > 
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\Params > PrimParam.l
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncName Light> S05_FunctionTest
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncRetType > Long
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\ParamsRetType > , Long
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\ParamsClean > PrimParam.l
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\InDescFile > 1
[Debugger]  LOG > 21:58:22      
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\sFuncNameCleared > S05_FunctionBis
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncName Full> .s S05_FunctionBis()
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\CallingConvention > StdCall
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncDesc > 
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\Params > 
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncName Light> S05_FunctionBis
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncRetType > String
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\ParamsRetType > 
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\ParamsClean > 
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\InDescFile > 1
[Debugger]  LOG > 21:58:22      
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\sFuncNameCleared > S05_FunctionTrisTest
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncName Full> S05_FunctionTrisTest()
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\CallingConvention > StdCall
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncDesc > 
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\Params > 
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncName Light> S05_FunctionTrisTest
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\FuncRetType > Long
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\ParamsRetType > 
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\ParamsClean > 
[Debugger]  LOG > 21:58:22      LL_DLLFunctions()\InDescFile > 1
[Debugger]  LOG > 21:58:22      
[Debugger]  LOG > 21:58:22    Remove some ASM code
[Debugger]  LOG > 21:58:22      LL_LibUsed() > string
[Debugger]  LOG > 21:58:22    Create ASM Files
[Debugger]  LOG > 21:58:22      Private functions
[Debugger]  LOG > 21:58:22        Create Regex for searching all PBName Functions and replacing ASM Name Functions
[Debugger]  LOG > 21:58:22        Replace pb name functions by asm name functions
[Debugger]  LOG > 21:58:22        Free Regex
[Debugger]  LOG > 21:58:22      Asm code
[Debugger]  LOG > 21:58:22        S05_FunctionTest > Loading sASMContent
[Debugger]  LOG > 21:58:22          Format
[Debugger]  LOG > 21:58:22          Main Declaration
[Debugger]  LOG > 21:58:22          Extrn
[Debugger]  LOG > 21:58:22            Extrn > Write
[Debugger]  LOG > 21:58:22            Extrn > InitFunction
[Debugger]  LOG > 21:58:22          Code
[Debugger]  LOG > 21:58:22        S05_FunctionTest > Writing File
[Debugger]  LOG > 21:58:22        S05_FunctionBis > Loading sASMContent
[Debugger]  LOG > 21:58:22          Format
[Debugger]  LOG > 21:58:22          Main Declaration
[Debugger]  LOG > 21:58:22          Extrn
[Debugger]  LOG > 21:58:22            Extrn > Write
[Debugger]  LOG > 21:58:22            Extrn > InitFunction
[Debugger]  LOG > 21:58:22          Code
[Debugger]  LOG > 21:58:22        S05_FunctionBis > Writing File
[Debugger]  LOG > 21:58:22        S05_FunctionTrisTest > Loading sASMContent
[Debugger]  LOG > 21:58:22          Format
[Debugger]  LOG > 21:58:22          Main Declaration
[Debugger]  LOG > 21:58:22          Extrn
[Debugger]  LOG > 21:58:22            Extrn > Write
[Debugger]  LOG > 21:58:22            Extrn > InitFunction
[Debugger]  LOG > 21:58:22          Code
[Debugger]  LOG > 21:58:22        S05_FunctionTrisTest > Writing File
[Debugger]  LOG > 21:58:22    Init Function Code
[Debugger]  LOG > 21:58:22    Shared Code
[Debugger]  LOG > 21:58:22      Adding function in LL_DLLFunctions()
[Debugger]  LOG > 21:58:22      Extracting SharedCode from MainFile & Deleting unuseful code
[Debugger]  LOG > 21:58:22      Search extrn
[Debugger]  LOG > 21:58:22      Begin to write the SharedFunction in file
[Debugger]  LOG > 21:58:22      Finish to write the SharedFunction in file

[Debugger Error]  Invalid memory access.
[Debugger Error]  File: /home/franklin/Bureau/DD_PureBasic/Proj_Moebius/Inc_Compile_Step2.pb (Line: 744)
  Fatal error. Do you with to open the Debugger console? (Yes, No)
  (y,N) 


Publié : lun. 04/mai/2009 20:34
par Progi1984
Personne n'a d'idée ?

Peut-être qqun souhaiterait un package de test ?

Publié : lun. 04/mai/2009 21:05
par Anonyme
C'est mieux avec un package ^^

Publié : lun. 04/mai/2009 21:37
par Progi1984
Voilà, j'ai fait le package : http://partage.rootslabs.net/Moebius_bug_2009_05_04.zip

Désolé, je n'y avais pas pensé au package sans que mon collègue de boulot ne m'y fasse penser.

Voici la ligne de commande à mettre dans les options en n'oubliant pas de changer le chemin du fichier Sample_05 :
Compilateur > Options du compilateur > Compiler/Executer > Paramètres de l'exécutable

Code : Tout sélectionner

-b -l "Sample_05" -f -pbi "Prefs/Moebius_Linux.ini" "/home/franklin/Bureau/DD_PureBasic/Proj_Moebius/Sample_Lib/Sample_05.pb"

Publié : mer. 06/mai/2009 17:48
par Progi1984
Quelqu'un a til eu le temps de tester ?

Merci d'avance

Publié : mer. 06/mai/2009 18:17
par Anonyme
Ligne 50 inc_step_1.pb , a filename must be specified :/

Essaye de nous facilité la compilation avec un petit ide pour le debbugage :D

Publié : mer. 06/mai/2009 19:35
par Progi1984
Voici la ligne de commande à mettre dans les options en n'oubliant pas de changer le chemin du fichier Sample_05 :
Compilateur > Options du compilateur > Compiler/Executer > Paramètres de l'exécutable

Code : Tout sélectionner

-b -l "Sample_05" -f -pbi "Prefs/Moebius_Linux.ini" "/home/franklin/Bureau/DD_PureBasic/Proj_Moebius/Sample_Lib/Sample_05.pb"

Publié : mer. 06/mai/2009 19:59
par Anonyme
Oui , ca j'ai bien compris , j'ai même modifier le fichier prefs.

Publié : mer. 06/mai/2009 20:11
par Progi1984
Que te retourne le debug ou le fichier de log dans /tmp/Moebius/Sample_05/LOGS, stp ?

Publié : mer. 06/mai/2009 20:41
par Anonyme
LOG > 21:40:54 Moebius_Compile_Step1()

Publié : mer. 06/mai/2009 20:43
par Anonyme
Ha non , ca passe , mauvaise manip de ma part
LOG > 21:43:14 Moebius_Compile_Step1()
LOG > 21:43:14 From > /tmp/Moebius/Sample_05/
LOG > 21:43:14 "/home/jerome/purebasic/compilers/pbcompiler" "/home/jerome/Bureau/Moebius_bug_2009_05_04/Sample_Lib/Sample_05.pb" -c -e "/tmp/Moebius/Sample_05/Sample_05"
LOG > 21:43:14
******************************************
PureBasic 4.30 (Linux - x86)
******************************************

Loading external modules...
Starting compilation...
13 lines processed.
Creating the executable.

- Feel the ..PuRe.. Power -



LOG > 21:43:14 Moebius_Compile_Step2()
LOG > 21:43:14 Load the content of purebasic.asm in memory
LOG > 21:43:14 Create Functions List from Pure & User Libraries
LOG > 21:43:14 Extracts information for the future creation of the DESC File
LOG > 21:43:14 LL_DLLFunctions()\sFuncNameCleared > S05_FunctionTest
LOG > 21:43:14 LL_DLLFunctions()\FuncName Full> S05_FunctionTest(PrimParam.l)
LOG > 21:43:14 LL_DLLFunctions()\CallingConvention > StdCall
LOG > 21:43:14 LL_DLLFunctions()\FuncDesc >
LOG > 21:43:14 LL_DLLFunctions()\Params > PrimParam.l
LOG > 21:43:14 LL_DLLFunctions()\FuncName Light> S05_FunctionTest
LOG > 21:43:14 LL_DLLFunctions()\FuncRetType > Long
LOG > 21:43:14 LL_DLLFunctions()\ParamsRetType > , Long
LOG > 21:43:14 LL_DLLFunctions()\ParamsClean > PrimParam.l
LOG > 21:43:14 LL_DLLFunctions()\InDescFile > 1
LOG > 21:43:14
LOG > 21:43:14 LL_DLLFunctions()\sFuncNameCleared > S05_FunctionBis
LOG > 21:43:14 LL_DLLFunctions()\FuncName Full> .s S05_FunctionBis()
LOG > 21:43:14 LL_DLLFunctions()\CallingConvention > StdCall
LOG > 21:43:14 LL_DLLFunctions()\FuncDesc >
LOG > 21:43:14 LL_DLLFunctions()\Params >
LOG > 21:43:14 LL_DLLFunctions()\FuncName Light> S05_FunctionBis
LOG > 21:43:14 LL_DLLFunctions()\FuncRetType > String
LOG > 21:43:14 LL_DLLFunctions()\ParamsRetType >
LOG > 21:43:14 LL_DLLFunctions()\ParamsClean >
LOG > 21:43:14 LL_DLLFunctions()\InDescFile > 1
LOG > 21:43:14
LOG > 21:43:14 LL_DLLFunctions()\sFuncNameCleared > S05_FunctionTrisTest
LOG > 21:43:14 LL_DLLFunctions()\FuncName Full> S05_FunctionTrisTest()
LOG > 21:43:14 LL_DLLFunctions()\CallingConvention > StdCall
LOG > 21:43:14 LL_DLLFunctions()\FuncDesc >
LOG > 21:43:14 LL_DLLFunctions()\Params >
LOG > 21:43:14 LL_DLLFunctions()\FuncName Light> S05_FunctionTrisTest
LOG > 21:43:14 LL_DLLFunctions()\FuncRetType > Long
LOG > 21:43:14 LL_DLLFunctions()\ParamsRetType >
LOG > 21:43:14 LL_DLLFunctions()\ParamsClean >
LOG > 21:43:14 LL_DLLFunctions()\InDescFile > 1
LOG > 21:43:14
LOG > 21:43:14 Remove some ASM code
LOG > 21:43:14 LL_LibUsed() > string
LOG > 21:43:14 Create ASM Files
LOG > 21:43:14 Private functions
LOG > 21:43:14 Create Regex for searching all PBName Functions and replacing ASM Name Functions
LOG > 21:43:14 Replace pb name functions by asm name functions
LOG > 21:43:14 Free Regex
LOG > 21:43:14 Asm code
LOG > 21:43:14 S05_FunctionTest > Loading sASMContent
LOG > 21:43:14 Format
LOG > 21:43:14 Main Declaration
LOG > 21:43:14 Extrn
LOG > 21:43:14 Extrn > Write
LOG > 21:43:14 Extrn > InitFunction
LOG > 21:43:14 Code
LOG > 21:43:14 S05_FunctionTest > Writing File
LOG > 21:43:14 S05_FunctionBis > Loading sASMContent
LOG > 21:43:14 Format
LOG > 21:43:14 Main Declaration
LOG > 21:43:14 Extrn
LOG > 21:43:14 Extrn > Write
LOG > 21:43:14 Extrn > InitFunction
LOG > 21:43:14 Code
LOG > 21:43:14 S05_FunctionBis > Writing File
LOG > 21:43:14 S05_FunctionTrisTest > Loading sASMContent
LOG > 21:43:14 Format
LOG > 21:43:14 Main Declaration
LOG > 21:43:14 Extrn
LOG > 21:43:14 Extrn > Write
LOG > 21:43:14 Extrn > InitFunction
LOG > 21:43:14 Code
LOG > 21:43:14 S05_FunctionTrisTest > Writing File
LOG > 21:43:14 Init Function Code
LOG > 21:43:14 Shared Code
LOG > 21:43:14 Adding function in LL_DLLFunctions()
LOG > 21:43:14 Extracting SharedCode from MainFile & Deleting unuseful code
LOG > 21:43:14 Search extrn

Publié : mer. 06/mai/2009 20:52
par Anonyme
Bug dans cette boucle , on ne sort pas , et 1 itération :roll:
Repeat
If FindString(sLineCurrentTrimmed, ":", 0) > 0
If FindString(sLineCurrentTrimmed, "SYS", 0) = 0
If StringField(sLineCurrentTrimmed, 1, " ") <> "file"
If StringField(sLineCurrentTrimmed, 1, " ") <> "public"
Moebius_Compile_Step2_AddExtrn(StringField(sLineCurrentTrimmed, 1, ":"))
EndIf
EndIf
EndIf
Else
If Left(StringField(sLineCurrentTrimmed, 1, " "), 2) = "v_"
If FindString(sLineCurrentTrimmed, "rd",0) > 0
Moebius_Compile_Step2_AddExtrn(StringField(sLineCurrentTrimmed, 1, " "))
EndIf
EndIf
EndIf

sLineCurrentTrimmed = Trim(PeekLine())
Until sLineCurrentTrimmed = Chr(1)

Publié : mer. 06/mai/2009 20:53
par Progi1984
C'est bon... j'ai trouvé le problème...

J'allouais une zone mémoire pour un string en oubliant le character null final...