Compilazione 64 bit

  1. last week

    Nedi F

    Jan 12 Europe (Italy, Bologna)

    Ciao a tutti, sto utilizzando da poco Xojo 2017r3 in ambiente Windows, e pochi giorni fa ho scoperto che, da ambiente Windows e Linux, non è possibile compilare a 64 bit per MacOS: me lo confermate?

    Secondo quesito: ho due progetti scritti in Xojo e li compilo entrambi per Windows a 64 bit. Uno dei due eseguibili funziona, l'altro va in crash. Sicuramente quello che va in crash conterrà qualcosa che fa a pugni con le macchine a 64 bit, anche se non ho idea di cosa possa essere. Aggiungo che l'esecuzione dei programmi compilati avviene sulla stessa macchina sulla quale sono stati sviluppati.
    Qualcuno mi può dare qualche suggerimento per scoprire cosa non va?

    Grazie a tutti!!

    Nedi

  2. 7 days ago

    Nedi F

    Jan 14 Europe (Italy, Bologna)

    Nessuna risposta....sigh!!!

  3. Beatrix W

    Jan 14 Pre-Release Testers Europe (Germany)

    You will get more responses if you post in english. And the Windows channel would be best if Google translate is correct.

    Do the crashes happen on compile time or during execution?

  4. 6 days ago

    Nedi F

    Jan 14 Europe (Italy, Bologna)

    Thank you for your answer, Beatrix. The program crashes when I execute the compiled program.

  5. Beatrix W

    Jan 15 Pre-Release Testers Europe (Germany)

    Nedi, we need way more information:

    • Can you identify the code where the app crashes? Startup or later?
    • Do you get an error message?
    • AFAIR you need to install a special app on the Windows to analyze crashes. Have you don that?
    • Does the app always crash at the same place/action?
    • Does the app not crash during debugging?
    • For 64bit the build folders change - at least they do on the Mac side. Have you updated all your IDE scripts so that everything is also included in your 64bit app?
  6. Nedi F

    Jan 15 Europe (Italy, Bologna)

    Hi Beatrix! I try to answer to your questions:
    a) I can't identify the code where the app crashes.
    b) I don't get any error message: simply "the app stopped working"
    c) I don't have installed any special app to analyze crashes.
    d) The app doesn't always crash at the same place. A place where the app crashes quite often is where I display a listbox
    e) During debugging the app works normally
    f) I don't know what kind of IDE scripts must be updated (I am new about Xojo)

    The 32bit version works fine.
    Thank you!

  7. Beatrix W

    Jan 15 Pre-Release Testers Europe (Germany)

    Okay, when the app doesn't crash on startup then we don't need to check for the IDE scripts.

    Random crashes usually occur when you have timing issues in threads.

    You really need to find out where the crashes occur. And yes, this sucks if you can't use the debugger. There is a magic method called "currentMethodName". In the code you suspect the crash could come from you need to add something like

    Globals.theErrorLog.logitem currentMethodName

    to EVERY method, event etc. at the top and the bottom. "logitem" writes to a log file. Alternatively, you could try to remove suspect code. But this is way easier if you have an idea where the crash could come from. And here is the information about Windows crash dumps: http://developer.xojo.com/techinfo/creating-crash-dumps .

  8. Nedi F

    Jan 15 Europe (Italy, Bologna)

    Hi Beatrix, following your post I got the dump when my app crashes. This dump says that the error is 0xC0000374 (heap damaged). I have no idea about the problem and, of course, about his solution.

  9. Maurizio R

    Jan 15 Pre-Release Testers, Xojo Pro

    Nedi,
    se possibile inizia a inserire istruzioni di print nel codice in modo da poter tracciare quali parti sono eseguite e quali no.
    Dal momento che un punto di blocco frequente sembra essere la visualizzazione di una listbox: da dove ricavi il contenuto da visualizzare nella listbox e come lo aggiungi nella listbox stessa?

    Purtroppo "un errore all'indirizzo 0xC0000374" non e' di nessun aiuto in quanto non e' decifrabile: l'ambiente Xojo non fornisce informazioni adeguate per poter interpretare in modo adeguato l'indirizzo di errore.

    Aggiungi altre informazioni se puoi.
    Saluti.

  10. 5 days ago

    Nedi F

    Jan 15 Europe (Italy, Bologna)

    Grazie Maurizio della tua risposta. Domani inserirò la scrittura di un file di log nei punti "caldi" in cui il programma va in crash.
    La cosa che mi lascia un po' interdetto è che la versione compilata a 32 bit funziona perfettamente...

    Nedi

  11. Antonio R

    Jan 15 Pre-Release Testers, Xojo Pro Europe (Italy)

    Usi riferimenti esterni (DLL) o altro?
    Potrebbero non essere completamente disponibili a 64bit.
    Non essendo, al momento, disponibile un debugger a 64bit, bisogna fare alla vecchia maniera scrivendo su file tutto il possibile e identificare quindi il vero problema...

  12. Nedi F

    Jan 16 Europe (Italy, Bologna)

    Ho inserito nei punti "caldi" del programma la scrittura di un file di log, per capire dove va in crash.
    Eseguo sempre lo stesso passo del programma, e sempre con gli stessi dati: ogni volta va in crash in punti diversi.
    A questo punto continuo a non capirci nulla, per cui rinuncio a compilare per il 64 bit.
    Una domanda: c'è qualche impostazione particolare da fare nell'IDE per il 64 bit?

    Grazie comunque a tutti!

  13. Antonio R

    Jan 16 Pre-Release Testers, Xojo Pro Europe (Italy)

    Hai messo in App.UnhandledException
    in modo da riportare (nel caso) lo stack dell'eccezione.

    così come puoi mettere all'inizio di ogni metodo
    #if logtrace
    writeToLog CurrentMethodName
    #end if
    dove writeToLog è la tua routine per il log dell'avanzamento e logTrace è una costante booleana (in un modulo) che metti a true quando compili per verificare le cose e a false quando non ti servono (release ad esempio)

  14. Nedi F

    Jan 16 Europe (Italy, Bologna)

    Ciao Antonio, ho fatto proprio così: ho inserito in svariati punti la scrittura di un file di log, scrittura condizionata dal valore di una variabile booleana.

    Non so cosa sia e come funzioni App.UnhandledException. Faccio qualche ricerca e poi vedo cosa fare.
    Se tu intanto vuoi spiegarmi significato e uso di questa App.UnhandledException mi faresti una cortesia.

    Grazie!

  15. 4 days ago

    Antonio R

    Jan 16 Pre-Release Testers, Xojo Pro Europe (Italy)

    Il mio suggerimento della variabile booleana è con #if (magari non lo hai notato oppure è quello che hai fatto)
    Questo permette in fase di compilazione di eliminare il codice non necessario (esattamente come quando fai #if targetWin...)

    UnhandledException è un evento a livello dell'oggetto App, se non hai gestito una eccezione alla fine arrivi qui prima di terminare l'applicazione. Nella documentazione trovi come far scrivere lo stack delle chiamate in modo da capire dove hai l'eccezione non gestita (ok più o meno dove, diciamo il metodo)

    Se il tuo problema è dovuto ad una eccezione lo puoi identificare così, se dovuto ad altro con il log che ti ho suggerito: nel file di log sarà l'ultima chiamata che trovi.

  16. Julian S

    Jan 16 Pre-Release Testers, Xojo Pro UK
    1. Open project
    2. Press CTRL+F
    3. Type declare<enter>

    Do you see any results?

    Google translate (sorry) :)

    1. Apri progetto
    2. Premere CTRL + F
    3. Digitare declare <invio>

    Vedi qualche risultato?

  17. Nedi F

    Jan 16 Europe (Italy, Bologna)

    Grazie Antonio! Domani mi studierò per bene il tuo suggerimento.

    Julian, there are no declare in my project...

  18. Nedi F

    Jan 17 Europe (Italy, Bologna)

    Ho inserito il codice riportato nella guida, riguardo l'evento App.UnhandledExcpetion. Quando eseguo il programma mi visualizza a più riprese il MsgBox, con delle indicazioni che non mi dicono nulla. Lo fa anche nel punto in cui il programma andava in crash (applicazione.exe ha smesso di funzionare), però ovviamente non fa quello che dovrebbe fare.

    La cosa buffa è che, una volta cancellato l'evento, anziché comportarsi come faceva prima, mi viene visualizzato immediatamente un box con la dicitura "An exception of class IOException was not handled. The application must shut down. Exception Error Number: 2"

    Aiuto!!!

  19. Maurizio R

    Jan 17 Pre-Release Testers, Xojo Pro

    Ciao Nedi,
    se puoi riporta qui lo stack dell'errore (ovvero il testo contenente l'elenco delle funzioni annidate al momento dell'errore) che trovi dopo il messaggio dell'errore stesso.

  20. Nedi F

    Jan 17 Europe (Italy, Bologna)

    Grazie Maurizio per l'aiuto. Il programma scatena l'evento UnhandledException 4 volte, prima di arrivare al punto in cui prima andava in crash.
    1) Appena lanciato l'eseguibile:
    IOException

    TextInputStream.!Open%o<TextInputStream>%o<FolderItem>
    App.Event_Open%%o<App>
    Application._CallFunctionWithExceptionHandling%%o<Application>p
    enableMenuItems
    RuntimeRegisterAppObject
    RunFrameworkInitialization
    REALbasic._RunFrameworkInitialization%%p
    _Main
    wWinMain
    __chkstk
    BaseThreadInitThunk
    RtlUserThreadStart

    2) Subito dopo:
    NilObjectException

    RuntimeRaiseException
    RaiseNilObjectException
    clsOpzioni.GetData%s%o<clsOpzioni>i8
    Modulo.SetDatiConfig
    Main.Main.Event_Open%%o<Main.Main>
    Application._CallFunctionWithExceptionHandling%%o<Application>p
    enableMenuItems
    FireWindowOpenEvents
    Window.Constructor%%o<Window>
    Main.Main%o<Main.Main>%
    _MakeDefaultView
    _LateStartup
    RunFrameworkInitialization
    REALbasic._RunFrameworkInitialization%%p
    _Main
    wWinMain
    __chkstk
    BaseThreadInitThunk
    RtlUserThreadStart

    3) A questo punto viene visualizzata la window principale. Quando clicco il pulsante della funzione incriminata succede questo:
    NilObjectException

    RuntimeRaiseException
    RaiseNilObjectException
    Preventivo.Preventivo.CaricaPopupMarche%%o<Preventivo.Preventivo>
    Preventivo.Preventivo.Event_Open%%o<Preventivo.Preventivo>
    FireWindowOpenEvents
    Window.Constructor%%o<Window>
    Preventivo.Preventivo%o<Preventivo.Preventivo>%
    Main.Main.Preventivo%%o<Main.Main>
    Main.Main.btnPreventivo_Action%%o<Main.Main>o<BevelButton>
    Delegate.IM_Invoke%%o<PopupMenu>
    AddHandler.Stub.17%%

    RuntimeOnesCompliment
    serialClearBreak
    serialClearBreak
    CallWindowProcW
    DispatchMessageW
    enableMenuItems
    Application._CallFunctionWithExceptionHandling%%o<Application>p
    enableMenuItems
    RuntimeRun
    REALbasic._RuntimeRun
    _Main
    wWinMain
    __chkstk
    BaseThreadInitThunk
    RtlUserThreadStart

    4) Quando infine compilo un textfield e premo TAB (qui prima andava in crash con la dicitura "PuntoAutoService.exe ha smesso di funzionare"):
    NilObjectException

    RuntimeRaiseException
    RaiseNilObjectException
    clsv_VeicoliCli.GetTarga%%o<clsv_VeicoliCli>s
    Preventivo.Preventivo.txtveiTarga_KeyDown%b%o<Preventivo.Preventivo>o<MyTxt>s
    Delegate.IM_Invoke%b%o<BevelButton>s
    AddHandler.Stub.9%b%s
    editAppendText
    editAppendText
    selectColor
    serialClearBreak
    enableMenuItems
    Application._CallFunctionWithExceptionHandling%%o<Application>p
    enableMenuItems
    RuntimeRun
    REALbasic._RuntimeRun
    _Main
    wWinMain
    __chkstk
    BaseThreadInitThunk
    RtlUserThreadStart

    Spero vivamente che qualcuno mi possa dare qualche indicazione, altrimenti rinuncerò alla compilazione a 64 bit.

    Grazie mille.

  21. Newer ›

or Sign Up to reply!