When the Shit Hits the Fan (Part 2 - Logic Pro)

Recent Logic Forum Posts

When the Shit Hits the Fan (Part 2 - Logic Pro)


Logic Pro (most of these comments are for Logic 8 and 9.0.2, although some may apply to Logic 7) As I write this (Murphy's Law strikes again…), Logic 9.1 is just released, with many bug fixes, 64-bit support and is now long file names capable - at least in 64-bit mode. I'll add more later, once I've played around with 9.1 and learned about the many improvements and new quirks I may find.

Logic problems generally fall into two categories:


1. Start up, crashes or instability problems.

2. Performance issues.


For (1) I'll try to list a few pointers to get Logic working. 


But for (2) the performance issues vary so much, and are so dependent on an individual set up and system, a book could be written about them, and the various permutations of software, hardware and system resources make generalizations very challenging. I'll list a few online resources which might help with performance issues, but I can't cover them in great detail as each problem depends on the exact configuration of the system used, software instruments, effects used etc.


Logic Crashes on Start Up


user


Be methodical. Try these steps one by one to isolate the possible cause.


Before you begin, are the problems you're noticing confined to Logic only? Do all other applications open a run fine? If not, then you may have a OSX problem, not Logic. One useful experiment is to open GarageBand. GB uses many of the drivers and resources as Logic; if GarageBand works fine, with your audio interface (if you have one) that gives you useful information, and you can skip some of the suggestions below, particularly those regarding attached hardware.


Note: Before you move files or delete components which may be suggested, do so only when Logic isn't running.


First, look at the error message. Usually it's 'unexpectedly quit' but occasionally you just get a hang, and you have to force quit, and there is no error message. But maybe you'll get lucky and there's a reason displayed, although it's rare.


If you started Logic by clicking on a Logic project file (.logic or .lso) then don't. 

Launch Logic from the Application folder. Does it open now? If yes, then you have a problem with that Logic project, not Logic itself. There could be many reasons - I'll list a few of them later.


If launching Logic without a project doesn't work, then:


Log in to your Guest Account. Does the problem still occur? If not, log in back to your usual user account and move these two files to the desktop:


~/Library/Preferences/com.apple.logic.pro.cs

~/Library/Preferences/com.apple.logic.pro.plist


Note: The "~" signifies that this is the user library, found within your Home folder. If there is no "~" in the front of the path, such as /Library/Application Support, it means that the library is the main system library in /Macintosh HD (or whatever you named your system drive).


Now restart Logic. Problem still there? If no, then you have corrupt preferences. Logic creates new prefs. on launch, so you can carry on, but know that you may have to import/recreate your custom key commands and/or the setup of any control surfaces you may have created.


Still not working?


Crash Logs


Crash logs are not intended for the end user. They're there for technical support, but primarily for developers, who can interpret these logs as the relate to their code. Having said that, the end user can still use them, and in some cases can indicate where a problem might be occurring in the processes being used by Logic.


First, go to Utilities folder - Console. 


Under ~/Library/Logs listed in the left column you'll find a section named CrashReporter. In that list, you should find the item Logic Pro.crash.log


Interpreting Crash Logs


Click on that, and the right window will fill with the log files. The most recent should be at the bottom. Scroll up until you reach the top of that particular report. They usually start like this:


Host Name:

Date/Time:

OS Version:

Report Version:


Scroll down until you see:


PID:

Thread:#


Backtrace Section


The thread which last crashed will be identified. Let's say that the Thread# is 9. Scroll down to where the list reaches Thread 9 CrashedEach line (frame) is numbered, starting at 0. Frame 0 identifies the last action in that thread before the crash; it shows events with the most recent at the top. The first few lines may identify a problem.


Here's a very simple example:


This crash log indicated that Thread 9 crashed. Looking at Thread 9, we see this:


Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000
Crashed Thread: 9


Scrolling down, we come to Thread 9


There are 4 columns - (1) Frame#, (2) name of binary (see below), (3) counter address and (4) name of debugging process symbol or a hex code (if the application developer stripped out these symbols before finalizing the application).


Thread 9 Crashed:
0 ??? 0000000000 0 + 0
1 ...lodyneEssentialRewireDevice 0x47b5b6ab GNThreadHandler(void*) + 103
2 libSystem.B.dylib 0x90fe2fbd _pthread_start + 345
3 libSystem.B.dylib 0x90fe2e42 thread_start + 34


We see that the crash seems to have been triggered by the MelodyneEssentialRewireDevice. Searching the crashlog for that component, we see that it's located here (just use your 'find' command and copy "lodyneEssentialRewireinto the search dialog):


/Library/Application Support/Propellerhead Software/ReWire/MelodyneEssentialReWireDevice.plugin/Contents/MacOS/MelodyneEssentialRewireDevice


Binary Images


In the lower part of crash logs, the components are listed currently in use, with paths.


Now we have two choices: update it by going to the manufacturer's site and downloading and installing the latest version, or just removing it to test if Logic now starts. When removing components, just move them to the desktop and restart Logic. If it doesn't fix the problem, or causes more problems, you can move it back to the same location.


Warning: Although crash logs can be very useful, it takes a while to learn all their capabilities, and the details are quite complex. The simple example above is a useful step, but explaining all the other clues you can get from logs takes some learning and experience. If you're interested in discovering more, start with this excellent Apple Tech Note 


Please note: unless you have access to the code (you're developing an AU plug-in, for example) much of the data in a crash log will be meaningless as you can't backtrace to the code fragment that caused the exception.


Unless you're working with (or are) a developer, much of the contents will seem to be gobbledygook. Most crash reports that an end user might see do not contain the process labels that indicate each task in (almost) English: instead you get a representation of the task in code. So if you don't have access to which task is represented by which code, this isn't going to help much.


In the example above:


Exception Type: EXC_BAD_ACCESS (SIGBUS)

Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000

Crashed Thread: 9


You'll see that the Exception which caused the crash has two parts: the Type and the code. From Apple documentation, we know that there are four main types:


EXC_BAD_ACCESS/KERN_INVALID_ADDRESS 

Caused by the thread accessing unmapped memory. Can  triggered by either a data access or an instruction fetch. The thread state section helps indicate the difference.


EXC_BAD_ACCESS/KERN_PROTECTION_FAILURE

Caused by the thread trying to write to read-only memory. This is always caused by a data access (not very helpful, unless you know which data was being accessed). 


EXC_BAD_INSTRUCTION

Caused by the thread executing an illegal instruction.


EXC_ARITHMETIC

This is caused by the thread doing an integer divide by zero on an Intel-based computer.


After the Exception code, the address which triggered the exception is shown, in this case, at 0x0000000000000000


Armed with this information, you can look a the Thread State: this is the block displayed after all the Backtrace listings. It might look like this (for an Intel machine running 32-bit, PPC is different - the eip: mentioned below is usually srr0 and for Intel running 64-bit code, it's rip):


Thread 9 crashed with X86 Thread State (32-bit):
eax: 0x427e13b0 ebx: 0x478a7e40 ecx: 0x02d418f4 edx: 0x427e11f0
edi: 0x02d418f0 esi: 0xb04bf000 ebp: 0xb04bef48 esp: 0xb04bef1c
ss: 0x0000001f efl: 0x00010206 eip: 0x00000000 cs: 0x00000017
ds: 0x0000001f es: 0x0000001f fs: 0x0000001f gs: 0x00000037
cr2: 0x00000000


Here, look for the value for eip: which is the program counter for the time the exception occurred. If that is the same value as the Exception address, we know from Apple's documentation that eip is the program counter at the time that the exception occurred. If eip is equal to the exception address (as in this example), the exception was caused by fetching instructions. Typically this means there was a call to a bogus function pointer, or the process pointed to a bad address which, in turn, means that the stack became corrupted. If eip is not equal to the exception address, the exception was caused by a memory access instruction.


This is more gobbledygook to the casual user - without more detail from the developer the chances are none of the backtrace information or exception states are going to be very helpful, but with practice and a process of elimination this can be very helpful to see how curative actions at the user level affect the crash reports, and in turn can point to problem areas, particularly in cooperation with the developer.




If you're not interested in learning more about crashlogs (and I don't blame you) they can still be useful. Copy the entire crash log (for one crash, not all of them) and paste it into a message in one of the support forums mentioned in below. There are users on these forums that do understand crash logs and may be able to offer further advice.


Assuming the crash log didn't help, or there wasn't a log entry created, the next step is to remove all external devices, except for your keyboard and mouse. Disconnect any firewire or USB devices, and importantly, your audio interface. Now trying starting Logic. Logic should tell you that it can no longer use your interface, and is switching to built-in audio instead. audiodeviceFor this experiment, that's good. Click ok. If Logic now launches, suspect your interface or its drivers.


Another method to check to see if your problem does stem from an audio device, start Logic without an audio driver. Hold down the Control key as soon as Logic is launched and say "No" when Logic asks if you want to use the audio drivers . If Logic launches successfully, check your audio drivers' compatibility, upgrade, or re-install.


When you launch Logic, does it 'hang' where the progress indicator says "Searching for audio unit plug-ins." If takes an unusual length of time, it may been that the audio unit cache file has become corrupted. Go to ~/Library/Caches  and delete the com.apple.audiounits.cache file. It will be rebuilt the next time you start Logic.


Project Specific Issues


Undo History - Delete it. Go to Edit → Delete Undo History

Reorganize Memory - Options → Project Information → Reorganize Memory. Then save your project under a different name.


Prevention


Always use the "save project" option in Logic. In fact, I wish Logic would make saving projects folders the only way of saving work. But they don't, so you should. Logic creates folders within the project folder as needed, sor freeze files, fades, bounces, samples etc. Hard disks are cheap - let Logic keep copies of everything used in your project and enable each component under 'Advanced Options' within the 'Include Assets' option in the save dialog.


Includeassets


Saving Project Files


It's rare that Logic files become corrupt, but it does happen. I try to avoid losing work by saving the Logic project file under a different name, saved to the same project folder. As my projects tend to span several weeks I've adopted a convention of starting with MySongName.logic. From then one, until the basic track is finished, I add a number (which corresponds to days worked, for me) but you should to modify this convention to suit the way you work. So I get three days of initial sessions shown as:


MySongName.logic

MySongName-01.logic

MySongName-02.logic


Then I may have a few days of dubbing guitar parts. I represent this as follows:


MySongName-gtr-01.logic

MySongName-gtr-02.logic

MySongName-gtr-03.logic


On to vocals:


MySongName-vox.logic

MySongName-vox-01.logic


and so on.


Logic creates a new set of backups (up to 10 in Logic 8/9) for each project file name. So each time you change the project file name, you get an extra 10 backups of that file, in the Project File Backups folder, which is within your project folder.


Don't forget to back everything up (See Part 1)




More Help - Online Forums

There's lots of help available online. For Logic-related issues, try:


Apple Support Forums

Logic Pro Help


which I think are the best.


For more general help, try the Apple forums, and search for the appropriate category for your particular issue. Macintouch is also a good resource for all things Mac.


When posting a question, for best results remember these tips:


Use a descriptive title for your post. Don't use "Help!!!!" or "Logic Won't Work" but rather something that describes your problem such as "Problem loading samples into EXS24" or "Logic 9 crashes on start up with OS 10.6" or "How do I use the same reverb for several tracks"


Create a profile, or list details of your current system, including OSX version, Logic version, interface used, details of your Mac including RAM and how many disks are used, and any other hardware relevant to your problem.


One of the top contributors in Apple's Logic Pro forums spent a lot of time compiling a list of links and resources covering many of the more frequently asked questions. Well worth browsing through this long thread to help you find topics relevant to your issue.


If you need more help with learning Logic, MacProVideo offers many tutorials, and are a great way to speed up the learning curve. 


Logic and Time Machine


Time Machine works well, but on slower machines, or very high activity Logic sessions when recording many tracks with large sample library access, under some circumstances Time Machine can slow down CPU and disk access. Use these two tiny automator apps. to Launch, and later Quit, Logic. The Launch app. first disables Time Machine, and then launches Logic. The Quit app. quits Logic (after prompting you to save) and turns T.M. backups on once again.


Click here to download.


While we're talking about Time Machine, if you'd like to change T.M.'s backup interval to something other than the default one hour, go to:


/System/Library/LaunchDaemons/com.apple.backupd-auto.plist


Open it in a text editor or Property List Editor, and look for this section:


Start Interval 3600


Change the 3600 number to some other time interval (it's in seconds)



More Coming Soon…


© 2010 Sound Propaganda