Seite 1 von 1

Probleme beim Ausdrucken unter OpenSuse

Verfasst: 17.10.2009 20:49
von manke
Hallo,

seit kurzem habe ich unter OpenSuse 11.1 Probleme beim Drucken aus meinen Programmen. Beim ersten Ausdruck klappt es immer, nur der Debugger meldet Warnungen, das sieht dann so aus:
[WARNING] GLib-GObject (CRITICAL): g_object_unref: assertion `G_IS_OBJECT (object)' failed
[20:39:44] [WARNING] Testdruck.pb (Zeile: 5)
[20:39:44] [WARNING] GLib-GObject (WARNING): invalid uninstantiatable type `GType' in cast to `GObject'
[20:39:44] [WARNING] Testdruck.pb (Zeile: 5)
Das zugehörige Testprogramm:

Code: Alles auswählen

#weiss=$FFFFFF
#schwarz=$000000

Procedure.l Drucken()
	If DefaultPrinter()=0
		ProcedureReturn 0
	EndIf
	l$="Testdruck"
	y=50
	If StartPrinting(l$)
		If StartDrawing(PrinterOutput())
			BackColor(#weiss)
			FrontColor(#schwarz)
			For i=0 To 2
				DrawText(20,y,"Das ist ein Testdruck!")
				y+20 
			Next
			StopDrawing()
		EndIf
		StopPrinting()
	EndIf
EndProcedure

Repeat
	Drucken()
Until MessageRequester("Frage","Soll nochmals gedruckt werden?",#PB_MessageRequester_YesNo)=#PB_MessageRequester_No
Dieses Testprogramm habe ich nur selten (nach wiederholtem Ausdrucken) zum Absturz gebracht. Mein eigentliches Projekt (Vokabeltrainer für Windows und Linux) stürzt regelmäßig nach dem zweiten Aufruf der Druckprozedur ab, und zwar immer dann, wenn dort wieder die Funktion DefaultPrinter() aufgerufen wird. Beim ersten Aufruf hagelt es nur Warnungen durch den Debugger.

Das Problem tritt unter PB4.4B5 genau so auf, wie unter PB4.31, alles in 32-Bit-Version unter OpenSuse 11.1-32-Bit. Unter Windows gibt es das Problem nicht. Bis vor ca. 2 Wochen hat es auch unter Linux nicht bestanden. Ich mache regelmäßige Updates über Yast. Da hat sich wohl irgend etwas unter Linux beim Ausdrucken geändert, worauf PureBasic aber vorbereitet war.

Weiss jemand Rat?

Re: Probleme beim Ausdrucken unter OpenSuse

Verfasst: 17.10.2009 21:50
von Waldixxl
Hallo
Ich arbeite mit Ubuntu 9.04 32 Bit auch dort tritt dieses Problem auf.
Viele Warnungen und beim zweiten Ausdruck Absturz, wobei dein Testprogramm das nicht macht.
Walter

Re: Probleme beim Ausdrucken unter OpenSuse

Verfasst: 18.10.2009 10:14
von Waldixxl
Guten Morgen

Ich habe den Code etwas abgeändert sodass sich der Fehler leichter reproduzieren lässt, zumindest bei Ubuntu.

Code: Alles auswählen

#weiss=$FFFFFF
#schwarz=$000000
  
Procedure Druck(y)
   DrawText(20,y,"Das ist ein Testdruck!")
   Line(20, y+8,160, 1 , $606060) 
EndProcedure

Procedure.l Drucken()
   If PrintRequester()=0
      ProcedureReturn 0
   EndIf
   LoadFont(1, "Nimbus Roman No9 L", 7 , #PB_Font_Bold)
   l$="Testdruck"
   y=50
   If StartPrinting(l$)
      If StartDrawing(PrinterOutput())
         BackColor(#weiss)
         FrontColor(#schwarz)
         DrawingFont(FontID(1))
         For i=0 To 80
            Druck(y)
            y+10
         Next
         StopDrawing()
         NewPrinterPage()
      EndIf
      StopPrinting()
   EndIf
EndProcedure

Width  = 220
Height = 150
If OpenWindow(0, 0, 0, Width, Height, "Lines", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   ButtonGadget(0,  75, 70, 80, 30, "Drucken")
   Repeat
     Event = WaitWindowEvent() 
     If Event = #PB_Event_Gadget And EventGadget()=0
         Drucken()
     EndIf
   Until  Event = #PB_Event_CloseWindow
EndIf
Walter

Re: Probleme beim Ausdrucken unter OpenSuse

Verfasst: 18.10.2009 10:40
von manke
Hallo,

in der Tat, mit der Änderung tritt schneller wieder ein Absturz auf. Auch in meiner "echten" Druckroutine im Vokabeltrainer tritt der Absturz fast immer nach dem zweiten Aufruf der Druckroutine auf, spätestens nach dem dritten. Es scheint damit zusammen zu hängen, das diese Routine komplexer ist und eine größere Anzahl Druckbefehle enthält (u.a. werden auch verschiedene Fonts beim Ausdruck benutzt). Ich habe damit schon viel experimentiert und einzelne Befehle weggelassen, aber Abstürze treten weiterhin regelmäßig auf. Die von mir angegebene Routine wurde bewusst auf das Wesentliche beschränkt, Fehlermeldungen kommen damit ja auch und ich habe sie nach wiederholtem Aufruf auch schon zum Absturz gebracht.

Wenn das Problem auch unter anderen Konfigurationen auftritt, sollte ich es dann unter "Bugs" melden? Oder liest hier ohnehin jemand aus dem PB-Team mit?

Viel Spaß und Ausdauer noch bei der Käfersuche!

manke

Re: Probleme beim Ausdrucken unter OpenSuse

Verfasst: 02.03.2010 20:28
von manke
Hallo Leute,

leider besteht das Problem mit dem Ausruck unter OpenSuse 11.2 und PB 4.41 (beide 32-bit) weiterhin. Ich kann einfach keine Lösung finden. Einmal Ausdrucken klappt immer, nach 2 bis 5 mal Ausdrucken spätestens kommt es dann aber zum Programmabsturz. Hat denn niemand eine Idee, woran es liegen könnte? Für Lösungsvorschläge bereits jetzt schon vielen Dank!

Re: Probleme beim Ausdrucken unter OpenSuse

Verfasst: 02.03.2010 20:57
von ts-soft
Bugmeldung im englischem Forum.
Hab denselben Fehler hier, und unter Windows wird nur eine Zeile ausgedruckt /:->

Gruß
Thomas

Re: Probleme beim Ausdrucken unter OpenSuse

Verfasst: 04.03.2010 11:22
von pickelrobert
Umgehungslösung: Druckfunktion in eigenes Programm auslagern. So lassen sich die Probleme erheblich reduzieren und die Hauptanwendung bleibt im Falle eines Absturzes verschont.

Alternativ: http://purebasic.fr/english/viewtopic.php?f=15&t=29904

Re: Probleme beim Ausdrucken unter OpenSuse

Verfasst: 06.03.2010 11:35
von manke
Hallo,

eine gute Idee! Mir war ein eigenes Programm allerdings zu umständlich wegen der dann nötigen Übergabe der zu druckenden Daten. Ich habe es mit einem Thread probiert. Die Druckroutine ist jetzt ein Thread, nach einigen anfänglichen Fehlern bei der Umsetzung scheint das jetzt zu funktionieren. Da der Druckthread sich nach jedem Aufruf wieder beendet, wird offenbar sonst entstehender "Müll" aufgeräumt. Jetzt habe ich es nach wiederholten Aufrufen nicht mehr geschafft, das Programm zum Absturz zu bringen!

Dennoch wäre es doch zu erhoffen, dass der Fehler in Purebasic (oder liegt es an Linux?) behoben würde.

Re: Probleme beim Ausdrucken unter OpenSuse

Verfasst: 06.03.2010 12:39
von ts-soft
manke hat geschrieben:(oder liegt es an Linux?)
Das sollte wohl eher heissen: oder liegt es an diesem verbuggtem OpenSuse?
Linux allgemein kann man nicht die Schuld für diese, zumindest zur Zeit, verbuggte Distribution geben.

Es wird aber wohl an PB liegen.