Using the debugger in Xcode isn’t as transparent as expected. Stepping into 

result = JNI_CreateJavaVM_fp(jvm, (void**) env, &args);

stalls execution. On the other hand, when bdj_test is run from the command line 
using the exact same libbluray.dylib, execution proceeds further.

In that case, libbluray.dylib gets to

cls = (*env)->FindClass(env,"java/awt/BDFontMetrics") (in register_native.c, 
_register_methods() 

in register_native.c, _register_methods(), at which point execution can’t go 
further. What’s interesting is that that hang is preceded by execution of two 
other calls to FindClass()

 cls = (*env)->FindClass(env, "org/videolan/Logger");

and 

cls = (*env)->FindClass(env, "org/videolan/Libbluray");

which return without issue.

Taking libbluray-awt-j2se-1.1.2.jar and libbluray-j2se-1.1.2.jar from inside 
VLC.app and copying them to /usr/local/share/java doesn’t improve matters for 
libbluray.dylib. VLC and libluray.dylib both make use of those same two jar 
files and both use adoptopenjdk-8, but VLC succeeds at reading Blu-Ray menus, 
and libbluray on a Mac doesn’t.


> On Jan 27, 2020, at 1:54 PM, glenn <[email protected]> wrote:
> 
> Perhaps I’m making progress. 
> 
> I’ve ported over the source to Xcode so its debugger can be used (I couldn’t 
> figure out how to codesign gdb so it could be used). The libbluray source 
> files now build OK into a dylib with Xcode. Using the built in debugger, the 
> code can be single stepped until it gets a SIGSEGV at the line corresponding 
> to line 955 of 
> https://code.videolan.org/videolan/libbluray/blob/master/src/libbluray/bdj/bdj.c:
>  
> <https://code.videolan.org/videolan/libbluray/blob/master/src/libbluray/bdj/bdj.c:>
>  
> 
>> result = JNI_CreateJavaVM_fp(jvm, (void**) env, &args);
> 
> The parameters in the call look like they have reasonable non null values. 
> 
> Executing that line puts
> 
>> ->  0x1100002b4: movl   (%rsi), %eax
>>     0x1100002b6: leaq   0xf8(%rbp), %rsi
>>     0x1100002bd: vmovdqu %ymm0, (%rsi)
>>     0x1100002c1: vmovdqu %ymm7, 0x20(%rsi)
>>     0x1100002c6: vmovdqu %ymm8, 0x40(%rsi)
>>     0x1100002cb: vmovdqu %ymm15, 0x60(%rsi)
> 
> in the editor window, indicating thread 1, 0x1100002b4. That hex number 
> doesn’t seem to be reasonable for anything in the program’s or system’s 
> address space. If I’m reading things right, the value stored in %rsi is 0 and 
> the value stored in %rbp is 0x000000010611a190.
> 
> I get the feeling that somehow the interface to Java is misconfigured in my 
> setup.
> 
> Glenn

_______________________________________________
libbluray-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/libbluray-devel

Reply via email to