Introjucer on OSX, audio plugin project problem

Discuss topics relating to the Introjucer (or Jucer) application

Introjucer on OSX, audio plugin project problem

Postby atom » Thu Sep 08, 2011 9:39 pm

Xcode is at version 3.2.6, the problem is when i try to add the module "juce_audio_plugin_client" (without it everything is ok), Xcode fails to open the project and says... i attached a screenshot it will be faster:

cap.jpg
cap.jpg (220.46 KiB) Viewed 1948 times


I tried doing a xcodebuild from the cli but it fails too:
Code: Select all
[atom@anus:~/devel/ctrlrv4/Builds/MacOSX]$ xcodebuild -project Ctrlr_Plugin_AU.xcodeproj -configuration Release_Nightly
2011-09-08 22:45:31.504 xcodebuild[3219:80b] -[PBXFileReference _setBuildPhase:]: unrecognized selector sent to instance 0x1050e9de0
2011-09-08 22:45:31.534 xcodebuild[3219:80b] [MT] ASSERTION FAILURE in /SourceCache/DevToolsBase/DevToolsBase-1809/pbxcore/PBXProject.m:1433
Details:  Assertion failed: _pFlags.projectClosed
Object:   <PBXProject:0x1050a0ce0>
Method:   -dealloc
Thread:   <NSThread: 0x100a13e90>{name = (null), num = 1}
Backtrace:
  0  0x0000000100325b86 -[XCAssertionHandler handleFailureInMethod:object:fileName:lineNumber:messageFormat:arguments:] (in DevToolsCore)
  1  0x000000010032590a _XCAssertionFailureHandler (in DevToolsCore)
  2  0x00000001002319da -[PBXProject dealloc] (in DevToolsCore)
  3  0x00007fff879ad361 __CFBasicHashStandardCallback (in CoreFoundation)
  4  0x00007fff879afd7c CFBasicHashRemoveValue (in CoreFoundation)
  5  0x00007fff879c5854 CFDictionaryRemoveValue (in CoreFoundation)
  6  0x000000010011f288 -[PBXPListUnarchiver _unarchiveObjectWithGlobalIDHexString:] (in DevToolsCore)
  7  0x000000010011c66c -[PBXPListUnarchiver decodeRootObject] (in DevToolsCore)
  8  0x000000010011a556 +[PBXProject projectWithFile:errorHandler:readOnly:] (in DevToolsCore)
  9  0x000000010000bcfc
10  0x0000000100001c04
11  0x0000000000000005
2011-09-08 22:45:31.535 xcodebuild[3219:80b] ASSERTION FAILURE in /SourceCache/DevToolsBase/DevToolsBase-1809/pbxcore/PBXProject.m:1433
Details:  Assertion failed: _pFlags.projectClosed
Object:   <PBXProject:0x1050a0ce0>
Method:   -dealloc
Thread:   <NSThread: 0x100a13e90>{name = (null), num = 1}
Backtrace:
  0  0x0000000100325b86 -[XCAssertionHandler handleFailureInMethod:object:fileName:lineNumber:messageFormat:arguments:] (in DevToolsCore)
  1  0x000000010032590a _XCAssertionFailureHandler (in DevToolsCore)
  2  0x00000001002319da -[PBXProject dealloc] (in DevToolsCore)
  3  0x00007fff879ad361 __CFBasicHashStandardCallback (in CoreFoundation)
  4  0x00007fff879afd7c CFBasicHashRemoveValue (in CoreFoundation)
  5  0x00007fff879c5854 CFDictionaryRemoveValue (in CoreFoundation)
  6  0x000000010011f288 -[PBXPListUnarchiver _unarchiveObjectWithGlobalIDHexString:] (in DevToolsCore)
  7  0x000000010011c66c -[PBXPListUnarchiver decodeRootObject] (in DevToolsCore)
  8  0x000000010011a556 +[PBXProject projectWithFile:errorHandler:readOnly:] (in DevToolsCore)
  9  0x000000010000bcfc
10  0x0000000100001c04
11  0x0000000000000005
xcodebuild: Error: couldn't load project /Users/atom/devel/ctrlrv4/Builds/MacOSX/Ctrlr_Plugin_AU.xcodeproj
User avatar
atom
JUCE UberWeenie
 
Posts: 1130
Joined: Thu Feb 15, 2007 11:36 am

Re: Introjucer on OSX, audio plugin project problem

Postby jules » Thu Sep 08, 2011 9:49 pm

I sometimes see this myself, but quitting and restarting Xcode usually sorts it out. Failing that, clear out your Xcode intermediates folder. I think it's some kind of xcode internal state getting messed up.
User avatar
jules
Fearless Leader
 
Posts: 17373
Joined: Mon Sep 06, 2004 9:03 am
Location: London, UK

Re: Introjucer on OSX, audio plugin project problem

Postby atom » Thu Sep 08, 2011 10:31 pm

Well i delete everything i could, i re-created the projects in the Introjucer i deleted the ~/Library/Preferences/com.apple.Xcode (or whatever the file is called) and it's still happening and only with that one modules included. What else can i delete :) ?
User avatar
atom
JUCE UberWeenie
 
Posts: 1130
Joined: Thu Feb 15, 2007 11:36 am

Re: Introjucer on OSX, audio plugin project problem

Postby jules » Fri Sep 09, 2011 8:38 am

Don't know.. Whenever I've seen it, it only ever seemed to happen once, and then sort itself out. If it's an introjucer-created project, you could try re-generating it?
User avatar
jules
Fearless Leader
 
Posts: 17373
Joined: Mon Sep 06, 2004 9:03 am
Location: London, UK

Re: Introjucer on OSX, audio plugin project problem

Postby atom » Fri Sep 09, 2011 11:01 am

i did, i tried multiple times, like i said i check that module checkbox and open in Xcode it fails, i uncheck that module it opens.
User avatar
atom
JUCE UberWeenie
 
Posts: 1130
Joined: Thu Feb 15, 2007 11:36 am

Re: Introjucer on OSX, audio plugin project problem

Postby jules » Fri Sep 09, 2011 1:33 pm

Hmm. Weird. My plugin projects seem to be fine. Could you perhaps email me this project, (or one that also fails to open?)
User avatar
jules
Fearless Leader
 
Posts: 17373
Joined: Mon Sep 06, 2004 9:03 am
Location: London, UK

Re: Introjucer on OSX, audio plugin project problem

Postby atom » Sat Sep 10, 2011 3:39 pm

I emailed you the projects. Also i updated my XCode to v4.0 and the error still exists.

I created a pure Introjucer AudioPlugin project from scratch didn't touch anything, just a new project, clicked save and open in Xcode and the same error happens, then i de-selected the juce_audio_plugin_client and still a crash.

But then i tried the two additional options "Addo source to project" and "Create local copy" and with the first one unchecked and the second one checked, the project opens (any other combination fails).
User avatar
atom
JUCE UberWeenie
 
Posts: 1130
Joined: Thu Feb 15, 2007 11:36 am

Re: Introjucer on OSX, audio plugin project problem

Postby jules » Sat Sep 10, 2011 8:30 pm

Thanks, I'll get it sorted out asap.
User avatar
jules
Fearless Leader
 
Posts: 17373
Joined: Mon Sep 06, 2004 9:03 am
Location: London, UK

Re: Introjucer on OSX, audio plugin project problem

Postby jules » Sun Sep 11, 2011 3:24 pm

Un-fucking-believable!

This is actually a hash collision - the items in the Xcode project are all given 64-bit identifiers, which I create by hashing the filename, and when two of them are identical, Xcode can't handle it and crashes.

But the chances of this happening should have been mind-bogglingly small! To be extra certain that there would never be a hash collision, I add a salt to the string, then I combine two different hashes (one 32-bit and one 64-bit), then I permute that with the hash of an upper-case version of the string, and even throw in the string length for good measure... Now, I'm certainly no cryptography expert, but I'd have bet serious money that the a collision would be practically impossible! But these two strings:

Code: Select all
"../../../../../../Volumes/CODE/code/juce/modules/juce_opengl/native/juce_android_OpenGLComponent.cpp"
"../../../../../../Volumes/CODE/code/juce/modules/juce_gui_basics/positioning/juce_MarkerList.h"

..have the same goddamn hash code, and they both occur in the default project! I mean, FFS.. !!
User avatar
jules
Fearless Leader
 
Posts: 17373
Joined: Mon Sep 06, 2004 9:03 am
Location: London, UK

Re: Introjucer on OSX, audio plugin project problem

Postby atom » Sun Sep 11, 2011 5:29 pm

Quite unbelievable i must say. Do you use CRC32 or something similar for you hashes ?
User avatar
atom
JUCE UberWeenie
 
Posts: 1130
Joined: Thu Feb 15, 2007 11:36 am

Re: Introjucer on OSX, audio plugin project problem

Postby jules » Sun Sep 11, 2011 5:42 pm

The basic string hash is a bit like CRC, which is why I tried to toughen it up by adding complexity, but clearly it wasn't enough!

I've changed it now to use MD5, so hopefully that'll be an end to the matter!
User avatar
jules
Fearless Leader
 
Posts: 17373
Joined: Mon Sep 06, 2004 9:03 am
Location: London, UK

Re: Introjucer on OSX, audio plugin project problem

Postby atom » Mon Sep 12, 2011 6:37 pm

I just pulled juce from the git repo, and i cleaned up everything, created a new GUI project in Introjucer and the Modules tab is empty.
I did nothing extra then that.

This is on Windows 7

Also on the sourceforge page there was an option in the GIT browser to download the latest snapshot of the repository as a .tar.gz file
that's gone, did sf.net change this or did you disable it for some reason ? It was useful on Windows if you didn't want to install the whole
GIT client package (witch is awful)
User avatar
atom
JUCE UberWeenie
 
Posts: 1130
Joined: Thu Feb 15, 2007 11:36 am

Re: Introjucer on OSX, audio plugin project problem

Postby jules » Mon Sep 12, 2011 7:01 pm

I'm in the middle of rewriting the whole modules/download system.. Will be ready in the next few days.
User avatar
jules
Fearless Leader
 
Posts: 17373
Joined: Mon Sep 06, 2004 9:03 am
Location: London, UK

Re: Introjucer on OSX, audio plugin project problem

Postby TomSwirly » Fri Dec 16, 2011 11:49 pm

So I'm also seeing exactly the same issue now... :-(

I'll look into this some more and get back to you.

Is there an easy way to check if this duplicated GUID is also the cause of the issue? There are a lot of files...
User avatar
TomSwirly
JUCE UberWeenie
 
Posts: 572
Joined: Mon Feb 08, 2010 11:19 pm

Re: Introjucer on OSX, audio plugin project problem

Postby TomSwirly » Sat Dec 17, 2011 2:37 am

So yes, the Introjucer is writing two different files with the same key. I solved it by locating the two files and renaming them. Looking at my notes, this is the second day I've lost to this issue, with a similar resolution.

I can't believe we're getting collisions from MD5 so the program must be using the same string before hashing.

Here are the relevant parts from project.pbxproj:
Code: Select all
      DC557F7E3B65D752ADC0B174 = { isa = PBXBuildFile; fileRef = 5D8721E5B8F23744B274AF6D; };
      DC557F7E3B65D752ADC0B174 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MessageRegistry.h; path = ../../../../src/rec/data/MessageRegistry.h; sourceTree = "SOURCE_ROOT"; };
      5D8721E5B8F23744B274AF6D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CleanName.cpp; path = ../../../../src/rec/music/CleanName.cpp; sourceTree = "SOURCE_ROOT"; };


slow.jucer:
Code: Select all
        <FILE compile="0" file="../../src/rec/data/MessageRegistry.h" id="qNVfASEJW"
              name="MessageRegistry.h" resource="0"/>
        <FILE compile="1" file="../../src/rec/music/CleanName.cpp" id="6ZwC7UHwz"
              name="CleanName.cpp" resource="0"/>
      DC557F7E3B65D752ADC0B174 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MessageRegistry.h; path = ../../../../src/rec/data/MessageRegistry.h; sourceTree = "SOURCE_ROOT"; };
      DC557F7E3B65D752ADC0B174 = { isa = PBXBuildFile; fileRef = 5D8721E5B8F23744B274AF6D; };

      5D8721E5B8F23744B274AF6D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CleanName.cpp; path = ../../../../src/rec/music/CleanName.cpp; sourceTree = "SOURCE_ROOT"; };
User avatar
TomSwirly
JUCE UberWeenie
 
Posts: 572
Joined: Mon Feb 08, 2010 11:19 pm

Next

Return to The Introjucer/Jucer

Who is online

Users browsing this forum: No registered users and 0 guests