🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

LO-Crash beim Schließen einer Datei

Alles zur Programmierung im LibreOffice.
Antworten
toni007
Beiträge: 34
Registriert: Mi 31. Okt 2012, 12:31

LO-Crash beim Schließen einer Datei

Beitrag von toni007 » Do 10. Dez 2015, 16:36

Hallo zusammen,

ich habe eine Anwendung(Extension) entwickelt, die Versicherungsangebote erstellt.
In der Extension gibt es u.a. zwei files:
FPP_ZD.ods und
FPP_BE.ods

FPP_ZD.ods (oDocFPP) ist die eigentliche Anwendung, in der über Dialoge Benutzereingaben erfolgen und Angebote erstellt werden.
In FPP_BE.ods (oDocFPP_BE) werden diese Benutzereingaben gespeichert.

Die Anwendung läuft nun seit einigen Jahren problemlos (zuletzt unter Ubuntu 12.04 und LO 4.1.5.3).
Wir haben jetzt auf Ubuntu 14.04 und LO 4.3.5.2 gewechselt.

Nun ergibt sich folgendes Problem:

Wenn ich in der Anwendung auf den Speicher-Button drücke, und den darauf folgenden Speichern-Dialog bestätige stürzt LO ab (in mehr als 50% der Fälle)

Grob passiert in der folgenden Prozedur dies:

Die Benutzerdatendatei (FPP_BE.ods) wird 'hidden' geöffnet, die Daten aus der Anwendung werden in FPP_BE.ods übertragen, die Datei wird gespeichert und dann geschlossen.
Beim .Close(True) crasht LO regelmäßig!!!

Die Prozedur aus der Extension:

Code: Alles auswählen

'*********************************************************************************************************
'*   Beim Speichern der Anwendung werden die Daten in die BE_Datei übernommen.                           *
'*   Die Prozedur wird über den Speichern-Button auf der Startseite der Anwendung aufgerufen.            *
'*********************************************************************************************************
Sub SpeichernUnter_FPP(oDocFPP As Object)
	Dim speicherDialog as Object
	Dim dateiname As String
	Dim DialogTyp(0)
	Dim arg()
	Dim antwort
	Dim datei
	Dim args1(0) as new com.sun.star.beans.PropertyValue
	Dim oDocFPP_BE As Object
	Dim i As Integer
	
	
    nurSpeichern_KZ_FPP = True

	args1(0).Name = "FilterName"
	args1(0).Value = "calc8"

	arg = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE)
	speicherDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
	With speicherDialog
		.Initialize(arg())
		.appendFilter("OpenDocument Tabellendokument (.ods)", "*.ods")
		.SetMultiselectionMode(False)
		.setDisplayDirectory(ConvertToURL(Environ("HOME")) & "/Kraftfahrt-OO") ' neu UBUNTU
		.SetTitle("Speichern Unter")
		.setcurrentFilter("OpenDocument Tabellendokument (.ods)")
		.SetValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_AUTOEXTENSION, 0, true)
		.SetDefaultName(glDateiname_FPP)
	End With
	
	antwort = speicherDialog.execute()
	If antwort = 1 Then
		datei = speicherDialog.Files(0) 'steht darin der nur der Name
		glDateiname_FPP = Mid(FilenameoutofPath(ConvertFromUrl(datei),sSeparator), 1, Len(FilenameoutofPath(ConvertFromUrl(datei),sSeparator)) - 4)
	    oDocFPP_BE = OpenFileInPathHidden("Template", "FPP_BE.ods")
' Datentransfer
		Call Anwendungsdaten_nach_BE_FPP(oDocFPP, oDocFPP_BE) 
		With oDocFPP_BE
			.LockControllers   	
			.unProtect("xxx")
			For i = 0 To .Sheets.getCount() - 1
				If .Sheets.getByIndex(i).Name <> "Dummy" Then
					.Sheets.getByIndex(i).IsVisible = False
				End If
			Next
			.Protect("xxx")
			.UnlockControllers
			.storeToUrl(datei, args1()) ' Speichern
			.Close(True) ' hier crasht LO!!!!!!
		End With
	End If
    nurSpeichern_KZ_FPP = False
 
	oDocFPP.Title = glDateiname_FPP
	oDocFPP.Modified = False
End Sub

Hat da jemand ne Idee???

LO meldet keinen Fehler, sondern stürzt direkt ab. Aber die JRE hat ein errorlog erzeugt. Die Datei kann ich aber nicht anhängen.
Hier der Anfang ...
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fbac54a3ec4, pid=10376, tid=140440868099968
#
# JRE version: Java(TM) SE Runtime Environment (8.0_60-b27) (build 1.8.0_60-b27)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.60-b23 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libsvxcorelo.so+0x418ec4] SdrObjList::GetObj(unsigned long) const+0x14
...

Gruß Thomas

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: LO-Crash beim Schließen einer Datei

Beitrag von gogo » Do 10. Dez 2015, 16:51

Warte das Speichern vollkommen ab!

oDocFPP_BE.ismodified oder oDocFPP_BE.modified muss FALSE sein.

Code: Alles auswählen

do while oDocFPP_BE.modified
   x=x+1
   wait 200
   if x>50 then
      msgbox "5 Sekunden gewartet, die Datei ist noch immer nicht gespeichert!"
      exit do ' besser: end
   end if
loop
Das Objekt oDocFPP_BE kann man leider nicht aus dem geposteten Code ersehen - musst Du mit xray oder mri rausfinden.
Wenn eine veränderte gerade zu speichernde Datei geschlossen wird hat man in der Regel ein Problem.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten