Probleme beim Ausdrucken unter OpenSuse

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
manke
Beiträge: 26
Registriert: 28.04.2007 03:04
Wohnort: Einhausen, Südhessen

Probleme beim Ausdrucken unter OpenSuse

Beitrag 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?
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: Probleme beim Ausdrucken unter OpenSuse

Beitrag 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
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: Probleme beim Ausdrucken unter OpenSuse

Beitrag 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
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
manke
Beiträge: 26
Registriert: 28.04.2007 03:04
Wohnort: Einhausen, Südhessen

Re: Probleme beim Ausdrucken unter OpenSuse

Beitrag 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
manke
Beiträge: 26
Registriert: 28.04.2007 03:04
Wohnort: Einhausen, Südhessen

Re: Probleme beim Ausdrucken unter OpenSuse

Beitrag 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!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Probleme beim Ausdrucken unter OpenSuse

Beitrag von ts-soft »

Bugmeldung im englischem Forum.
Hab denselben Fehler hier, und unter Windows wird nur eine Zeile ausgedruckt /:->

Gruß
Thomas
pickelrobert
Beiträge: 207
Registriert: 09.12.2004 22:09

Re: Probleme beim Ausdrucken unter OpenSuse

Beitrag 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
manke
Beiträge: 26
Registriert: 28.04.2007 03:04
Wohnort: Einhausen, Südhessen

Re: Probleme beim Ausdrucken unter OpenSuse

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Probleme beim Ausdrucken unter OpenSuse

Beitrag 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.
Antworten