[c++] vage access violation error at runtime

Pagina: 1
Acties:

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
kheb deze functies

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void mysqlconnection::create_connection()
{
   mysql_real_connect(_connection,_host,_user,_passwd,_db,_port,_unix_socket,_client_flag);
}

char* mysqlconnection::exec_query(char* _thequery)
{
   char* temp;
   MYSQL_RES *pResult;

   mysql_query(_connection,_thequery); //query the database
   pResult = mysql_store_result(_connection);

   temp = (char*)pResult;
   return temp;

}


Ik maak de verbinding ed. Dat werkt perfect.

Alleen het werkt perfect zolang ik hetzelfde user en passwd gebruik.
Als ik een andere(natuurlijk bestaande user gebruik) krijg ik een access violation error in module libmysql.dll read of address 0000000. Het zal dus wel een ongeadresseerd stuk geheugen zijn wat het programma probeert te benaderen.

Ik heb al een andere lib aan het project toegevoegd, maar dat werkte niet.
Iemand een idee? Want tja..het is niet echt fijn als je altijd dezelfde user en passwd moet gebruiken.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • igmar
  • Registratie: April 2000
  • Laatst online: 29-06 18:56

igmar

ISO20022

koli-man schreef op 01 July 2003 @ 14:51:
kheb deze functies

<snip>

Ik heb al een andere lib aan het project toegevoegd, maar dat werkte niet.
Iemand een idee? Want tja..het is niet echt fijn als je altijd dezelfde user en passwd moet gebruiken.
Begin eerst maar eens met errorchecking zou ik zeggen.

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Tja hij gaat fout bij het verbinden met de db zodra ik een andere username en passwd gebruik, dus dat gaat niet perfect nee.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
C++:
1
2
3
4
5
6
7
8
9
10
11
void mysqlconnection::create_connection()
{
   try{
      if (mysql_real_connect
(_connection,_host,_user,_passwd,_db,_port,_unix_socket,_client_flag)==NULL)
        throw Exception("Verbinden met DB mislukt!");
    }
   catch(const Exception &E){
       ShowMessage(AnsiString(E.ClassName())+ E.Message);
   }
}


Ja en hij geeft netjes de foutmelding wanneer ik een ander username en passwd gebruik. En als ik de eerste gebruik die het altijd gedaan heeft, geeft hij de melding niet. Terwijl de user toch echt bestaat.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Stacktrace. Kijk welke variabele 0 is. Waarom is dat zo?

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Zou je dat stacktrace een beetje willen toelichten? Ik heb bij msdn gezocht maar het lijkt alsof dat iets van Visual C is. Ik gebruik borland c++.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21:31
Hmm, ik heb gemerkt dat wanneer je gebruik maakt van ado en je vangt niet de _com_exceptions op dat ie dan ook crashed met een av.

Een stacktrace kun je bij iedere debugger zien als je je applicatie breakt ( dmv een breakpunt bv ). De stacktrace geeft dan aan welke functies worden aangeroepen om bij die break te komen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Tja ik snap der geen reet meer van. Die stacktrace heb ik denk ik gevonden en ik step dan door. Precies hetzelfde, alleen een andere user en password. Snap het gewoon niet, waarom hij het bij het ene wel doet en de andere niet. Ook helemaal opnieuw builden helpt niet. |:(

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
bescheiden skopje

de functie mysql_real_connect is gewoon een beetje raar maar ik kan het niet traceren.....helaas :(
Misschien iemand eerder ervaring met deze functie gehad?

[ Voor 96% gewijzigd door koli-man op 02-07-2003 22:19 ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • igmar
  • Registratie: April 2000
  • Laatst online: 29-06 18:56

igmar

ISO20022

koli-man schreef op 01 juli 2003 @ 15:20:

Ja en hij geeft netjes de foutmelding wanneer ik een ander username en passwd gebruik. En als ik de eerste gebruik die het altijd gedaan heeft, geeft hij de melding niet. Terwijl de user toch echt bestaat.
Die error heeft gewoon echt te maken met verkeerde rechten. Niks geen rare functie oid, gewoon een gebruiker die niet bestaat / geen rechten heeft. Lijkt me vrij duidelijk.

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Tja maar die users die heb ik aangemaakt via een control panel (van PLESK). Daar staan die users op een rijtje.
Afbeeldingslocatie: http://home.wanadoo.nl/nicky.jaspers/adminpanel.jpg

Deze users bestaan dus wel.
Met php kan ik wel met elke gebruiker verbinding maken.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


Verwijderd

koli-man schreef op 01 juli 2003 @ 17:30:
Zou je dat stacktrace een beetje willen toelichten? Ik heb bij msdn gezocht maar het lijkt alsof dat iets van Visual C is. Ik gebruik borland c++.
Klinkt alsof je je eens zou moeten verdiepen in het gebruik van een debugger.
Da's dus niet vervelend bedoeld, maar juist als een tip.

Als je goed met je debugger om kan gaan zul je zien dat je voortaan 99,9% van je problemen 10x zo snel oplost.

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Verwijderd schreef op 03 July 2003 @ 10:30:
[...]


Klinkt alsof je je eens zou moeten verdiepen in het gebruik van een debugger.
Da's dus niet vervelend bedoeld, maar juist als een tip.
Dat heb ik inderdaad nu gedaan en heb eerder altijd alleen gebruik van watches en threads maar niet van die stacktrace. Die heb ik inderdaad nu gevonden, maar daar is helaas mijn probleem hier niet mee opgelost
Als je goed met je debugger om kan gaan zul je zien dat je voortaan 99,9% van je problemen 10x zo snel oplost.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • xoror
  • Registratie: November 1999
  • Niet online
gokje, mag die 'andere user' wel vanaf de ip inloggen waar je je programma draait...
als het goed is staat dat ook wel duidelijk in je error msg

Mitsubishi Warmtepomp Uitlezen / Besturen | Optimaliseren


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
stacktrace staat ook wel bekend als de callstack. Het gaat om de lijst van functies die tot dat punt aangeroepen zijn, maar nog niet gereturned zijn. Bovendien zou je de parameters van die functies moeten zien, en als je een debug-versie van de code hebt zou je ook de code&lokale vars moeten kunnen zien. Vervolgens kun je terugdenken waarom die ene variabele die NULL is die waarde heeft.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • igmar
  • Registratie: April 2000
  • Laatst online: 29-06 18:56

igmar

ISO20022

koli-man schreef op 03 July 2003 @ 10:24:
Deze users bestaan dus wel.
Met php kan ik wel met elke gebruiker verbinding maken.
En ? Wil dat zeggen dat ze rechten hebben ? Nee. Rechten zijn oa ook afhankelijk van bv of je unix sockets of IP sockets gebruikt. Het is gewoon een rechten probleem, en heeft niks met 'foute' functies te maken.

Nu is het een stukje code en van 'los mijn probleem maar op'. Geen dump van variabelen, geen info over de class, wat moeten wij doen ? Gokken ???

  • igmar
  • Registratie: April 2000
  • Laatst online: 29-06 18:56

igmar

ISO20022

xoror schreef op 03 July 2003 @ 11:18:
gokje, mag die 'andere user' wel vanaf de ip inloggen waar je je programma draait...
als het goed is staat dat ook wel duidelijk in je error msg
Hij print dus geen errors. Staat overigens duidelijk in de manual, maar goed. Zelf zoeken is teveel gevraagd schijnbaar.

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Afbeeldingslocatie: http://home.wanadoo.nl/nicky.jaspers/callstack.jpg
Dit heb ik uit de callstack weten te vissen. De functie gedraagt zich alsof de user niet bestaat. Maar nou weet ik uit betrouwbare bron :) Dat die user echt bestaat.
Dat vind ik zo raar.
En zelf zoeken nee, dat is niet teveel gevraagd.

Die functie mysql_real_connect zet de variabelen die je op het plaatje ziet in de variabele

MYSQL* _connection

[ Voor 24% gewijzigd door koli-man op 03-07-2003 13:36 ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 16:45

  • xoror
  • Registratie: November 1999
  • Niet online
connect vanaf de machine waarop je app draait met php.
dan kan je zien of je vanaf die machine toegang heb. php zou waarschijnlijk draaien op zelfde machine al s je mysql. lokaal mag je meestal wel connecten. van ander machine is heel ander verhaal.

ik kan me niet voorstellen dat hij geen fout melding geeft..
http://www.mysql.com/doc/en/mysql_real_connect.html daar staat toch heel duidelijk hoe het moet...
ook hoe de je de errors moet afbeelden.

Mitsubishi Warmtepomp Uitlezen / Besturen | Optimaliseren


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Tja ik krijg dan te zien...access denied for user fotouser@et_balbla_wanadoo.adsl.nl using password YES;

dan kan ik het snappen, dat het waarschijnlijk fotouser@mijndomein.nl moet zijn. Dus dan moet ik die verbinding duidelijk zien te maken dat het domein anders is. denk ik. Ik zou dan de unix_socket in iets anders moeten veranderen.

[ Voor 6% gewijzigd door koli-man op 03-07-2003 14:09 ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • xoror
  • Registratie: November 1999
  • Niet online
lees maar eerst mysql hoofdstuk door over user authenticatie.

Mitsubishi Warmtepomp Uitlezen / Besturen | Optimaliseren


  • igmar
  • Registratie: April 2000
  • Laatst online: 29-06 18:56

igmar

ISO20022

koli-man schreef op 03 juli 2003 @ 13:31:
[afbeelding]
Dit heb ik uit de callstack weten te vissen. De functie gedraagt zich alsof de user niet bestaat. Maar nou weet ik uit betrouwbare bron :) Dat die user echt bestaat.
Dat vind ik zo raar.
Indien je geen unix sockets gebruikt maakt ie verbinding via TCP/IP. Dat moet terug te vinden zijn in de ACL van de database zelf.

Indien de database op dezelfde machine draait als het script : Gewoon localhost gebruiken. Je MOET dan echter wel als host 'localhost' opgeven, en geen % of andere wildcard.

  • igmar
  • Registratie: April 2000
  • Laatst online: 29-06 18:56

igmar

ISO20022

koli-man schreef op 03 July 2003 @ 14:00:
[...]
Tja ik krijg dan te zien...access denied for user fotouser@et_balbla_wanadoo.adsl.nl using password YES;
Dat moet je dus ALTIJD doen als iets niet goed gaat. Dan ben je d'r ook meteen achter waarom iets niet goed gaat ipv te gokken. Error handling is een vereiste wil je zowiezo een beetje redelijke applicatie schrijven.

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
igmar schreef op 04 July 2003 @ 10:26:
[...]


Indien je geen unix sockets gebruikt maakt ie verbinding via TCP/IP. Dat moet terug te vinden zijn in de ACL van de database zelf.

Indien de database op dezelfde machine draait als het script : Gewoon localhost gebruiken. Je MOET dan echter wel als host 'localhost' opgeven, en geen % of andere wildcard.
De database draait niet op dezelfde machine als de applicatie. Ik heb de provider een mail gestuurd hoe ik de rechten van een db - user kan aanpassen. Ik kan zelf namelijk alleen maar een user aanmaken of verwijderen, maar rechten hier in aanpassen kan ik niet.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21:31
Is het nu nog altijd zo dat je programma crashed of gaat het probleem nu over db access rechten ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

Topicstarter
Het programma zelf crashed niet meer. Ik krijg alleen geen verbinding met de database en dat kan mogelijkerwijs liggen aan de rechten van de user.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff

Pagina: 1