Jump to content

Emulator crashes when printing

David Purton

Recommended Posts

Hi Everyone,


I've just purchased Accordance 9.2.1 (February 2011) and have it up and running really well under Debian Gnu/Linux! At this point I just have the starter set of packages installed while I wait for my media to arrive in the post :).


However, I can't get printing working.


I get the same result under both Linux and Windows 7 (both 32 bit installs). And it doesn't seem to matter whether I use Print-To-PDF or the Adobe PostScript Printer driver with a Virtual Printer (my preferred option, as fonts are included in the PostScript file), or the Apple LaserWriter 8 driver (printing to file).


(For reference, the windows set up I tried is from the download from accordancebible.com. No changes were made to OSDRIVE.HFV in order to reproduce the crash using Print-To-PDF. Accordance itself is on a separate virtual disk which was copied as is from Linux to Windows)


It's not a general printing problem, since printing does work from SimpleText and Finder.


This is what happens:

  • I highlight some text
  • I select "Print selection..."
  • The print dialogue appears
  • I choose all my options (I've tried lots of combinations)
  • I select save
  • I choose a location to write the file out (doesn't matter where I choose)
  • The Mac complains that AppleTalk isn't available and asks me if I want to print later (this happens in SimpleText too, not sure if it is related, or how to fix it... Why is network access required to print to a Virtual Printer???)
  • I elect print later
  • The emulator crashes :(
  • No print file is produced


I built Basilisk II from source with debugging symbols to see if I could see what is happening.


The exception occurs in do_get_mem_word in sysdeps.h:


Program received signal SIGSEGV, Segmentation fault.

0x780a3ecf in do_get_mem_word (a=0x71a461a2) at sysdeps.h:424

424 static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint32 retval; __asm__ ("movzwl %w1,%k0\n\tshll $16,%k0\n\tbswapl %k0\n" : "=&r" (retval) : "m" (*a) : "cc"); return retval;}


This is the backtrace:


#0 0x780a3ecf in do_get_mem_word (a=0x71a461a2) at sysdeps.h:424

#1 0x780a3f70 in get_word (addr=1638162850) at ../uae_cpu/memory.h:129

#2 0x780a5cc5 in op_3010_0_ff (opcode=4144) at cpuemu.cpp:9110

#3 0x78081dcb in m68k_do_execute () at ../uae_cpu/newcpu.cpp:1367

#4 0x78081e1a in m68k_execute () at ../uae_cpu/newcpu.cpp:1384

#5 0x7807e55d in Start680x0 () at ../uae_cpu/basilisk_glue.cpp:146

#6 0x7804bd7b in main (argc=1, argv=0xbffff574) at main_unix.cpp:816


It appears the pointer a (0x71a461a2 in this case) is invalid. The debugger can't read it's contents.


I haven't bothered to build from source under windows, but the crash occurs in the same place, so it seems to be platform independent.


Although I have a reasonable idea about C/C++, this is probably beyond me (and I don't know any assembler).


So, now for some questions:


  • Can anybody else reproduce this?
  • Any guesses as to whether the problem lies in the Emulator or in Accordance?
  • Can someone shed light on the AppleTalk requirements for print to file using a virtual printer?


Look forward to hearing from anyone on how to make some progress!





Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...