Very early crash on Intel IRIS cards? Not even the window is launched :-/

Hi,

Somebody with a recent MacBook Pro – which now come with Intel IRIS cards (which seem to have HORRIBLE 3D performance) – couldn’t even launch my app. I have a settings screen prior to starting adding viewport processors and filters. That screen launches on every single possible computer I have tested in the past 9 months and this includes OLDER iMacs like a 2008 one with an old Radeon HD 5xxx card. Anyhow, this new MacBook Pro got a “Intel IRIS 5100” graphics card and it couldn’t even produce the LWGJL window for some reason. Anybody has any clue on how to at least launch it even if it renders at 2fps lol

inb4: But Ben, where is the crash log? Well, that’s the thing, it doesn’t go as far enough as to be able to dump one. She already tried updating to Java 8 and it didn’t change anything to the situation.

Thx

If theres no log then the app wasn’t even started.

What happens when the app is executed from command line? E.g. java -jar YourGameJarHere.jar

I’ll try and guide her to do that… rolls eyes she’s not very technical so we’ll see if she can even do that. I do not own a Mac except for an old 1997 iMac which cannot take more recent than OSX 10.4 I think, but I’ll try and guide her and come back.

BTW why is it that since we switched to this ugly Wordpress template, I no longer am subscribed to my own threads lol WTF? I have to manually subscribe everytime I create one and in this case I had forgotten that’s why it took a week for me to reply O.o

@.Ben. said: I'll try and guide her to do that... *rolls eyes* she's not very technical so we'll see if she can even do that. I do not own a Mac except for an old 1997 iMac which cannot take more recent than OSX 10.4 I think, but I'll try and guide her and come back.

BTW why is it that since we switched to this ugly Wordpress template, I no longer am subscribed to my own threads lol WTF? I have to manually subscribe everytime I create one and in this case I had forgotten that’s why it took a week for me to reply O.o

Is there a part of “disabled all plugins” that was unclear? Wondering how we could state that better. There were a sh$t-ton of plugins enabled before. Now there aren’t. We disabled them.

Oh, that’s right, because to do anything basic, in Wordpress, you need a PLUGIN. That’s right, sorry I should have known that better, it’s obvious.

As to your actual problem, it might be helpful if you built logging to a file into your app. I know it’s a trivially simple thing in log4j, I assume there must be an easy way with the built-in Java logging. That would at least give you an opportunity to capture some logging before running start() and if there are any errors thrown before JME takes over catching the errors then you will get those also.

At any rate, it’s an easier way to instrument code than trying to get non-technical users to run your app from the command line on a Mac.

WELL… the app already does log all errors and it even posts it to a web server in real time where it is stored in a database. The program does not even start, it crashes even before the Main is instanciated it seems because it does not even run the handleError() override! There is not even a LWGJL window created it seems. I mean, I’ve run this on VERY VERY old hardware and even tough the processors make the game crash because the graphics card sucks, AT LEAST it would open a LWJGL window but not on this brand new MacBook Pro :-/

EDIT: Oops I misread, yeah the crash happens before the actual JME logging. That’s the thing that sucks and never happened before… so I’m stuck in this case, but I’ll have to figure out why it crashed, I mean, it’s pretty weird that it can’t open a window… that’s very basic stuff.

jME3 doesn’t do any built-in logging to a file so I am not sure why that matters here. What @pspeed is asking is to set up file-based logging before doing anything, even starting a jME3 application, inside of your main() method.

I didn’t say anything about that tough? This is what I have at the moment which already logs and posts to my web server all errors. It works fine, I get all the exceptions and the trace, which is perfect. It just doesn’t work before my app is instanciated which is happening with a brand new MacBook Pro for some obscure reason.

[java]
@Override
public void handleError(String errMsg, Throwable t){
String s = “”;
for(StackTraceElement e : t.getStackTrace()){
s += e.toString() + “\r\n”;
}
System.out.println("\u001B[31mEXCEPTION: " + t.toString() + " ----------------------------------------\u001B[0m\r\n" + s);
try {
// Create a new crash report file
File file = new File(“CRASH.txt”);
file.createNewFile();
text_file_crash_writer = new FileWriter(file);
text_file_crash_writer.write("[" + get_clock_time() + "] " + t.toString() + “\r\n” + s + “\r\n”);
text_file_crash_writer.flush();
text_file_crash_writer.close();
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}

    // Post graphics card capabilities and crash report to tracking PHP page
    Map<String, String> map_post_vars = new HashMap<>();
    map_post_vars.put("caps", renderer.getCaps().toString());
    map_post_vars.put("gpu", gpu_name);
    // Etc... many other vars...
    map_post_vars.put("crash", t.toString() + "\r\n" + s);
    
    // Encode POST parameters as key/value pairs into a single string
    String str_post_data = "";
    for (Map.Entry pairs : map_post_vars.entrySet()) {
        try {
            str_post_data += URLEncoder.encode(pairs.getKey().toString(), "UTF-8") + "=" + URLEncoder.encode(pairs.getValue().toString(), "UTF-8") + "&";
        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    if(!is_testing()){
        Post post_out = Http.post("http://***************.php?", str_post_data);
        if(post_out.responseCode() == 200){ // OK
            //System.out.println("SOCKET finished posting");
        }
        else{
            //System.out.println("HTTP SOCKET ERROR [" + post_out.responseCode() + "] posting, output: [" + post_out.responseMessage() + "]");
        }
    }
    
    System.exit(1);
}

[/java]

I bet that stupid user never updated to Java 7.x like I said twice already. That must be the problem because in Java 7.x (don’t remember the exact version number) it began to support diamond operators like: <> and since I use that a lot, I think it can’t execute at all without Java 7.x but I can’t for sure know if she updated or not. The Mac is brand new but I don’t know what version of Java it is shipping with. Probably early Java 7 and it may not support diamond operators I think because even my own computer I remember I had to update from Java 7 to Java 7 in spring 2014 for the diamond operators to work.

[java]
public static void main( String… ) {
// log something right away the very first thing.
}
[/java]

…then if you don’t see that then you know it’s a “wrong Java” issue.

Yeah, I’ll definitely do that… that implies recompiling and sending another copy to the user and CROSSING FINGERS she doesn’t mix up with the old version facepalm already happened with another person before so… lol :wink:

@.Ben. said: Yeah, I'll definitely do that... that implies recompiling and sending another copy to the user and CROSSING FINGERS she doesn't mix up with the old version *facepalm* already happened with another person before so.... lol ;-)

For Mythruna, I included the build date in the deployment.

Mythruna-20120617-Windows.zip and whatever.

Yeah, my files are always named like this, but believe it or not some people have mistakenly run the wrong version right after downloading an updated ZIP file lol:

I also include a build.time in my jar that I load as a resource and log right in main() as the very first thing.

…so at least I will know which is which if I get a log. :slight_smile:

From my build.xml:
[java]



    <property name="application.title" value="Mythruna-${build.date}"/>

    <echo message="${build.date}" file="build/classes/build.date" />
</target>

[/java]

That is if the user is smart enough to find the log file in their computer and send it to you by email or something. rolls eyes hahah… good times with those users… good times.