Oh. And in my hs_err_pid. I have this:

bash-3.00# cat hs_err_pid574.log
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  SIGSEGV (0xb) at pc=0x700dce44, pid=574, tid=40
#
# Java VM: Java HotSpot(TM) Server VM (1.5.0_17-b04 mixed mode)
# Problematic frame:
# C  [libCMeCab.so+0xce44]
Java_net_moraleboost_mecab_impl_LocalProtobufTagger__1parse+0x1dc
#

---------------  T H R E A D  ---------------

Current thread (0x00f1f318):  JavaThread "pool-1-thread-1"
[_thread_in_native, id=40]

siginfo:si_signo=11, si_errno=0, si_code=1, si_addr=0x00000004

Registers:
 O0=0x00000000 O1=0x01a3153c O2=0x0000032b O3=0x00000001
 O4=0xd28f7670 O5=0x0166d970 O6=0x68cfea78 O7=0x700dce30
 G1=0x00000000 G2=0x00001cc4 G3=0x00001ffc G4=0x003c7cc6
 G5=0xff032f18 G6=0x00000000 G7=0x703d3200 Y=0x00000000
 PC=0x700dce44 nPC=0x700dce48


Top of Stack: (sp=0x68cfea78)
0x68cfea78:   d28e1744 76242b10 76242b30 68cfebf4
0x68cfea88:   68cfeb78 000002b0 76286b68 700f7e00
0x68cfea98:   00f1f3d4 68cfec88 00000000 01463f90
0x68cfeaa8:   68cfecfc 00000000 68cfeba0 f8c0c280
0x68cfeab8:   d28f7670 01463f90 01a3153c 0000032b
0x68cfeac8:   00000000 00000063 01a2ef88 785e1d80
0x68cfead8:   d28e1728 00000000 745b6a28 785e1d80
0x68cfeae8:   01a3153c 00000000 0000000a d28e1a78

Instructions: (pc=0x700dce44)
0x700dce34:   01 00 00 00 82 10 00 08 c2 27 bf 60 c2 07 bf 60
0x700dce44:   c2 00 60 04 c2 27 bf 60 c2 07 bf 60 80 a0 60 00

Stack: [0x68c00000,0x68d00000),  sp=0x68cfea78,  free space=1018k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native
code)
C  [libCMeCab.so+0xce44]
Java_net_moraleboost_mecab_impl_LocalProtobufTagger__1parse+0x1dc
j  net.moraleboost.mecab.impl.LocalProtobufTagger._parse(J[B)[B+700489
j  net.moraleboost.mecab.impl.LocalProtobufTagger._parse(J[B)[B+0
j
net.moraleboost.mecab.impl.LocalProtobufTagger.parse(Lnet/moraleboost/mecab/impl/Messages$ParsingRequest;)Lnet/moraleboost/mecab/impl/Messages$ParsingResponse;+8
j
net.moraleboost.mecab.impl.ProtobufTagger.parse(Ljava/lang/CharSequence;)Lnet/moraleboost/mecab/impl/ProtobufNode;+44
j
net.moraleboost.mecab.impl.ProtobufTagger.parse(Ljava/lang/CharSequence;)Lnet/moraleboost/mecab/Node;+2
j
net.moraleboost.mecab.impl.ThreadBasedLoadLifecycleAwareTagger.getNodes(Ljava/lang/CharSequence;)Ljava/util/List;+5
j
net.moraleboost.mecab.impl.ThreadBasedLoadLifecycleAwareTagger.preLoad(Ljava/util/List;)Z+21
j
net.moraleboost.mecab.LoadLifecycleUtil$1.execute(Lnet/moraleboost/mecab/LoadLifecycleAware;Ljava/util/List;)Z+2
j
net.moraleboost.mecab.LoadLifecycleUtil.loadTemplate(Lnet/moraleboost/mecab/LoadLifecycleUtil$LoadCallback;Ljava/lang/Object;Ljava/util/List;)Z+16
j
net.moraleboost.mecab.LoadLifecycleUtil.preLoad(Ljava/lang/Object;Ljava/util/List;)Z+5
j
net.moraleboost.lucene.analysis.ja.GenericMeCabTokenizer.preLoad(Ljava/util/List;)Z+5
j
net.moraleboost.mecab.LoadLifecycleUtil$1.execute(Lnet/moraleboost/mecab/LoadLifecycleAware;Ljava/util/List;)Z+2
j
net.moraleboost.mecab.LoadLifecycleUtil.loadTemplate(Lnet/moraleboost/mecab/LoadLifecycleUtil$LoadCallback;Ljava/lang/Object;Ljava/util/List;)Z+16
j
net.moraleboost.mecab.LoadLifecycleUtil.preLoad(Ljava/lang/Object;Ljava/util/List;)Z+5
j
net.moraleboost.lucene.analysis.ja.GenericMeCabAnalyzer.preLoad(Ljava/util/List;)Z+5
j
net.moraleboost.mecab.LoadLifecycleUtil$1.execute(Lnet/moraleboost/mecab/LoadLifecycleAware;Ljava/util/List;)Z+2
j
net.moraleboost.mecab.LoadLifecycleUtil.loadTemplate(Lnet/moraleboost/mecab/LoadLifecycleUtil$LoadCallback;Ljava/lang/Object;Ljava/util/List;)Z+16
j
net.moraleboost.mecab.LoadLifecycleUtil.preLoad(Ljava/lang/Object;Ljava/util/List;)Z+5
...
j
net.moraleboost.mecab.LoadLifecycleUtil$1.execute(Lnet/moraleboost/mecab/LoadLifecycleAware;Ljava/util/List;)Z+2
j
net.moraleboost.mecab.LoadLifecycleUtil.loadTemplate(Lnet/moraleboost/mecab/LoadLifecycleUtil$LoadCallback;Ljava/lang/Object;Ljava/util/List;)Z+16
j
net.moraleboost.mecab.LoadLifecycleUtil.preLoad(Ljava/lang/Object;Ljava/util/List;)Z+5
...
j  java.util.concurrent.Executors$RunnableAdapter.call()Ljava/lang/Object;+4
j  java.util.concurrent.FutureTask$Sync.innerRun()V+22
j  java.util.concurrent.FutureTask.run()V+4
j
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Ljava/lang/Runnable;)V+43
j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+28
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub
V  [libjvm.so+0x19b360]
V  [libjvm.so+0x2c05ac]
V  [libjvm.so+0x2dfb4c]
V  [libjvm.so+0x2db6e8]
V  [libjvm.so+0x67db8c]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  net.moraleboost.mecab.impl.LocalProtobufTagger._parse(J[B)[B+0
j
net.moraleboost.mecab.impl.LocalProtobufTagger.parse(Lnet/moraleboost/mecab/impl/Messages$ParsingRequest;)Lnet/moraleboost/mecab/impl/Messages$ParsingResponse;+8
j
net.moraleboost.mecab.impl.ProtobufTagger.parse(Ljava/lang/CharSequence;)Lnet/moraleboost/mecab/impl/ProtobufNode;+44
j
net.moraleboost.mecab.impl.ProtobufTagger.parse(Ljava/lang/CharSequence;)Lnet/moraleboost/mecab/Node;+2
j
net.moraleboost.mecab.impl.ThreadBasedLoadLifecycleAwareTagger.getNodes(Ljava/lang/CharSequence;)Ljava/util/List;+5
j
net.moraleboost.mecab.impl.ThreadBasedLoadLifecycleAwareTagger.preLoad(Ljava/util/List;)Z+21
j
net.moraleboost.mecab.LoadLifecycleUtil$1.execute(Lnet/moraleboost/mecab/LoadLifecycleAware;Ljava/util/List;)Z+2
j
net.moraleboost.mecab.LoadLifecycleUtil.loadTemplate(Lnet/moraleboost/mecab/LoadLifecycleUtil$LoadCallback;Ljava/lang/Object;Ljava/util/List;)Z+16
j
net.moraleboost.mecab.LoadLifecycleUtil.preLoad(Ljava/lang/Object;Ljava/util/List;)Z+5
j
net.moraleboost.lucene.analysis.ja.GenericMeCabTokenizer.preLoad(Ljava/util/List;)Z+5
j
net.moraleboost.mecab.LoadLifecycleUtil$1.execute(Lnet/moraleboost/mecab/LoadLifecycleAware;Ljava/util/List;)Z+2
j
net.moraleboost.mecab.LoadLifecycleUtil.loadTemplate(Lnet/moraleboost/mecab/LoadLifecycleUtil$LoadCallback;Ljava/lang/Object;Ljava/util/List;)Z+16
j
net.moraleboost.mecab.LoadLifecycleUtil.preLoad(Ljava/lang/Object;Ljava/util/List;)Z+5
j
net.moraleboost.lucene.analysis.ja.GenericMeCabAnalyzer.preLoad(Ljava/util/List;)Z+5
j
net.moraleboost.mecab.LoadLifecycleUtil$1.execute(Lnet/moraleboost/mecab/LoadLifecycleAware;Ljava/util/List;)Z+2
j
net.moraleboost.mecab.LoadLifecycleUtil.loadTemplate(Lnet/moraleboost/mecab/LoadLifecycleUtil$LoadCallback;Ljava/lang/Object;Ljava/util/List;)Z+16
j
net.moraleboost.mecab.LoadLifecycleUtil.preLoad(Ljava/lang/Object;Ljava/util/List;)Z+5
...
j
net.moraleboost.mecab.LoadLifecycleUtil$1.execute(Lnet/moraleboost/mecab/LoadLifecycleAware;Ljava/util/List;)Z+2
j
net.moraleboost.mecab.LoadLifecycleUtil.loadTemplate(Lnet/moraleboost/mecab/LoadLifecycleUtil$LoadCallback;Ljava/lang/Object;Ljava/util/List;)Z+16
j
net.moraleboost.mecab.LoadLifecycleUtil.preLoad(Ljava/lang/Object;Ljava/util/List;)Z+5
...
j  java.util.concurrent.Executors$RunnableAdapter.call()Ljava/lang/Object;+4
j  java.util.concurrent.FutureTask$Sync.innerRun()V+22
j  java.util.concurrent.FutureTask.run()V+4
j
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Ljava/lang/Runnable;)V+43
j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+28
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x012a4100 JavaThread "pool-1-thread-5" [_thread_blocked, id=44]
  0x011eed68 JavaThread "pool-1-thread-4" [_thread_blocked, id=43]
  0x0104eb18 JavaThread "pool-1-thread-3" [_thread_blocked, id=42]
  0x01dc1fc8 JavaThread "pool-1-thread-2" [_thread_in_native, id=41]
=>0x00f1f318 JavaThread "pool-1-thread-1" [_thread_in_native, id=40]
  0x011e1e08 JavaThread "Timer-0" [_thread_blocked, id=39]
  0x021b3948 JavaThread "Store portal.org.hibernate.cache.StandardQueryCache
Spool Thread" daemon [_thread_blocked, id=38]
  0x00a27638 JavaThread "Store
portal.org.hibernate.cache.UpdateTimestampsCache Spool Thread" daemon
[_thread_blocked, id=37]
...
  0x0113caf8 JavaThread "resin-12" daemon [_thread_blocked, id=31]
  0x00697728 JavaThread "BlueDragon MailSender" daemon [_thread_blocked,
id=30]
  0x00adb418 JavaThread "BlueDragon CFQUERY Backgrounder" daemon
[_thread_blocked, id=29]
  0x007d8348 JavaThread "BlueDragon AlarmManager" daemon [_thread_blocked,
id=28]
  0x005ba1b8 JavaThread "resin-11" daemon [_thread_blocked, id=27]
  0x005b9df0 JavaThread "resin-10" daemon [_thread_blocked, id=26]
  0x005b9a28 JavaThread "resin-9" daemon [_thread_blocked, id=25]
  0x005b9660 JavaThread "resin-8" daemon [_thread_blocked, id=24]
  0x005b9438 JavaThread "resin-7" daemon [_thread_blocked, id=23]
  0x005a7b70 JavaThread "resin-6" daemon [_thread_blocked, id=22]
  0x00344cc8 JavaThread "resin-5" daemon [_thread_blocked, id=21]
  0x00344130 JavaThread "resin-4" daemon [_thread_blocked, id=20]
  0x002bb698 JavaThread "resin-3" daemon [_thread_blocked, id=19]
  0x002bc408 JavaThread "resin-2" daemon [_thread_blocked, id=18]
  0x002bbc40 JavaThread "resin-1" daemon [_thread_blocked, id=17]
  0x0032b548 JavaThread "resin-0" daemon [_thread_blocked, id=16]
  0x002bba78 JavaThread "resin-thread-scheduler" daemon [_thread_blocked,
id=15]
  0x0032ae40 JavaThread "resin-thread-launcher" daemon [_thread_blocked,
id=14]
  0x002982b8 JavaThread "resin-alarm" daemon [_thread_blocked, id=13]
  0x00154468 JavaThread "Low Memory Detector" daemon [_thread_blocked,
id=11]
  0x001521f8 JavaThread "CompilerThread1" daemon [_thread_blocked, id=10]
  0x001513d8 JavaThread "CompilerThread0" daemon [_thread_blocked, id=9]
  0x001505b8 JavaThread "AdapterThread" daemon [_thread_blocked, id=8]
  0x0014f828 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=7]
  0x0013d620 JavaThread "Finalizer" daemon [_thread_blocked, id=6]
  0x0013d140 JavaThread "Reference Handler" daemon [_thread_blocked, id=5]
  0x00038268 JavaThread "main" [_thread_blocked, id=1]

Other Threads:
  0x0013b060 VMThread [id=4]
  0x000b1478 WatcherThread [id=12]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 PSYoungGen      total 151424K, used 80214K [0xcdc00000, 0xddc00000,
0xf8800000)
  eden space 87552K, 91% used [0xcdc00000,0xd2a55a40,0xd3180000)
  from space 63872K, 0% used [0xd3180000,0xd3180000,0xd6fe0000)
  to   space 77632K, 0% used [0xd9030000,0xd9030000,0xddc00000)
 PSOldGen        total 241664K, used 151551K [0x78400000, 0x87000000,
0xcdc00000)
  object space 241664K, 62% used [0x78400000,0x817ffff0,0x87000000)
 PSPermGen       total 49152K, used 32921K [0x74400000, 0x77400000,
0x78400000)
  object space 49152K, 66% used [0x74400000,0x764265a0,0x77400000)

Dynamic libraries:
0x00010000      /usr/jdk/instances/jdk1.5.0/bin/java
0xff3a0000      /lib/libthread.so.1
0xff370000      /lib/libdl.so.1
0xff200000      /lib/libc.so.1
0xff390000      /platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1
0xfe800000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/server/libjvm.so
0xff1e0000      /lib/libsocket.so.1
0xff350000      /usr/lib/libsched.so.1
0xff1b0000      /usr/lib/libCrun.so.1
0xff190000      /lib/libm.so.1
0xff080000      /lib/libnsl.so.1
0xfe700000      /lib/libm.so.2
0xff160000      /lib/libscf.so.1
0xff140000      /lib/libdoor.so.1
0xff060000      /lib/libuutil.so.1
0xfe7e0000      /lib/libgen.so.1
0xfe6d0000      /lib/libmd.so.1
0xfe6b0000      /platform/SUNW,Sun-Fire-V240/lib/libmd_psr.so.1
0xfe690000      /lib/libmp.so.2
0xfe670000
/usr/jdk/instances/jdk1.5.0/jre/lib/sparc/native_threads/libhpi.so
0xfe610000      /lib/nss_files.so.1
0xfe5e0000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/libverify.so
0xfe5a0000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/libjava.so
0xfe580000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/libzip.so
0xfafe0000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/libj2pkcs11.so
0xfafb0000      /usr/lib/libpkcs11.so
0xfaf90000      /usr/lib/libcryptoutil.so.1
0xfaea0000      /usr/lib/security/pkcs11_softtoken.so
0xfadd0000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/libnet.so
0xfadb0000      /lib/nss_nis.so.1
0xf8a60000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/libmanagement.so
0x6e780000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/libawt.so
0x6e600000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/libmlib_image.so
0x74040000
/usr/jdk/instances/jdk1.5.0/jre/lib/sparc/headless/libmawt.so
0x703a0000      /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/libnio.so
0x70260000      /lib/librt.so.1
0x70240000      /lib/libaio.so.1
0x70220000      /usr/lib/libsendfile.so.1
...
0x68e80000      /usr/local/lib/libstdc++.so.5
0x700b0000      /usr/local/lib/libgcc_s.so.1
...
0x703c0000      /lib/libpthread.so.1
0x6ff50000      /usr/local/lib/libz.so

...

Signal Handlers:
SIGSEGV: [libjvm.so+0x70d9b0], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGBUS: [libjvm.so+0x70d9b0], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGFPE: [libjvm.so+0x2731e4], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGPIPE: [libjvm.so+0x2731e4], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGILL: [libjvm.so+0x2731e4], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
SIGUSR2: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
SIGHUP: [libjvm.so+0x67ef14], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGINT: [libjvm.so+0x67ef14], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGQUIT: [libjvm.so+0x67ef14], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGTERM: [libjvm.so+0x67ef14], sa_mask[0]=0xffbffeff, sa_flags=0x00000004


---------------  S Y S T E M  ---------------

OS:                         Solaris 10 3/05 s10_74L2a SPARC
           Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                            Assembled 22 January 2005
                       Preinstall part number 259-4425-01

uname:SunOS 5.10 Generic_138888-03 sun4u  (T2 libthread)
rlimit: STACK 8192k, CORE infinity, NOFILE 65536, AS infinity
load average:0.85 0.75 0.57

CPU:total 2 has_v8, has_v9, has_vis1, has_vis2, is_ultra3

Memory: 8k page, physical 8388608k(2633448k free)

vm_info: Java HotSpot(TM) Server VM (1.5.0_17-b04) for solaris-sparc, built
on Nov 10 2008 02:34:32 by unknown with unknown Workshop:0x550

On Tue, Mar 9, 2010 at 4:27 PM, Franz Allan Valencia See <
[email protected]> wrote:

> Actually, that String/CharSequence is being placed on a java Class
> generated by Protobuf.
>
> Which debugger would you suggest? Pardon, I'm a noob on native libraries.
>
>
> Thanks,
>
> --
> Franz Allan Valencia See | Java Software Engineer
> [email protected]
> LinkedIn: http://www.linkedin.com/in/franzsee
> Twitter: http://www.twitter.com/franz_see
>
> On Tue, Mar 9, 2010 at 3:13 PM, Kenton Varda <[email protected]> wrote:
>
>> Protocol Buffers are binary data, not text.  You can't store them in
>> String (or CharSequence) objects because those are meant only for Unicode
>> text.  If CMeCab tries to transfer protobuf messages as Strings then it is,
>> unfortunately, broken.
>>
>> If you want to figure out how you are hitting that log message, you can
>> run in a debugger and insert a breakpoint at the file and line number shown
>> in the message.
>>
>> On Mon, Mar 8, 2010 at 10:19 PM, Franz Allan Valencia See <
>> [email protected]> wrote:
>>
>>> Good day,
>>>
>>> I am working on a java application which uses a 3rd party framework
>>> called CMeCab-Java. CMeCab-Java has two parts - the Java side & the Cpp
>>> side. One way to bridge the two which CMeCab-Java provides is via protobuf
>>> (and advantage of this approach over the other bridging approaches is that
>>> this is faster and easier to work with since what you get are objects and
>>> not streams).
>>>
>>> What CMeCab-Java does specifically is it accepts an input String
>>> (CharSequence to be exact) and tokenizes it using MeCab (
>>> http://mecab.sourceforge.net/), and gives the result back as a Java
>>> object.
>>>
>>> While playing with it, i found that there were too many round trips
>>> between Java & the Cpp side. So what I am trying to do is to minimize that
>>> (and hopefully improve performance). Specifically, instead of passing the n
>>> number of texts, what I did was assembled this n texts into a single long
>>> text delimited by 0x00 (i.e. {'the', 'quick', 'brown', 'fox' } becomes 'the'
>>> + 0x00 + 'quick' + 0x00 + 'brown' + 0x00 + 'fox') and passed to the Cpp side
>>> that via protobuf.
>>>
>>> This works ok a single threaded application. However, once I multithread
>>> this request, I am getting the following error from protobuf (with gdb)
>>> which crashes the JVM:
>>> libprotobuf ERROR google/protobuf/wire_format.cc:1059] Encountered string
>>> containing invalid UTF-8 data while serializing protocol buffer. Strings
>>> must contain only UTF-8; use the 'bytes' type for raw bytes.
>>>
>>> But I am not sure why is that. Is there any flag I can turn on to see
>>> what this invalid UTF-8 data is and which string was it processing when I
>>> got that? (...Or is there any easier/better way for me to achieve the
>>> performance gains that I am looking for? :-) )
>>>
>>> Thanks,
>>> --
>>> Franz Allan Valencia See | Java Software Engineer
>>> [email protected]
>>> LinkedIn: http://www.linkedin.com/in/franzsee
>>> Twitter: http://www.twitter.com/franz_see
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Protocol Buffers" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<protobuf%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/protobuf?hl=en.
>>>
>>
>>
>
>


-- 
Franz Allan Valencia See | Java Software Engineer
[email protected]
LinkedIn: http://www.linkedin.com/in/franzsee
Twitter: http://www.twitter.com/franz_see

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to