While compiling a 3rd party library last night, I ran into a case where the linker kept growing until it consumed all available memory and my system died (around 6GB+). The line where it died was this one:

/opt/sunstudio12.1/bin/CC -G -hlibode.so.1 -o .libs/libode.so.1.1.1 .libs/array.o .libs/box.o .libs/capsule.o .libs/collision_cylinder_box.o .libs/collision_cylinder_plane.o .libs/collision_cylinder_sphere.o .libs/collision_kernel.o .libs/collision_quadtreespace.o .libs/collision_sapspace.o .libs/collision_space.o .libs/collision_transform.o .libs/collision_trimesh_disabled.o .libs/collision_util.o .libs/convex.o .libs/cylinder.o .libs/error.o .libs/export-dif.o .libs/heightfield.o .libs/lcp.o .libs/mass.o .libs/mat.o .libs/matrix.o .libs/memory.o .libs/misc.o .libs/obstack.o .libs/ode.o .libs/odeinit.o .libs/odemath.o .libs/plane.o .libs/quickstep.o .libs/ray.o .libs/rotation.o .libs/sphere.o .libs/step.o .libs/stepfast.o .libs/testing.o .libs/timer.o .libs/util.o .libs/collision_trimesh_trimesh.o .libs/collision_trimesh_trimesh_new.o .libs/collision_trimesh_sphere.o .libs/collision_trimesh_ray.o .libs/collision_trimesh_opcode.o .libs/collision_trimesh_box.o .libs/collision_trimesh_ccylinder.o .libs/collision_trimesh_distance.o .libs/collision_cylinder_trimesh.o .libs/collision_trimesh_plane.o -zallextract ./.libs/libfast.a joints/.libs/libjoints.a ../../OPCODE/.libs/libOPCODE.a ../../OPCODE/Ice/.libs/libIce.a -zdefaultextract -lX11 -library=stdcxx4 -lsunmath -lpthread -lc -lm -lCrun -lstdcxx4 -Qoption ld -zignore -Qoption ld -zcombreloc -Qoption ld -Bdirect

I'm on build 139 and I've tried both sunstudio12u1 from the repository as well as the CBE version of sunstudio12.1 that's offered from opensolaris.org pre-patched.

I grabbed a core the second time around when it hit around 3GB in process size and dumped a quick pstack:

core 'core.zeddicus.ld.101.28010' of 28010: /usr/ccs/bin/ld -zld32=-S/tmp/lib_base_link.1274383539.28009/libldstab
 ffffdd7fffcbc6ca __write () + a
 ffffdd7fffc856d8 fputs () + 230
 00000000004020d3 eprintf () + f3
 ffffdd7fffaf0ee5 sym_tworeals () + f5
 ffffdd7fffaf206c ld32_sym_resolve () + 274
 ffffdd7fffafe2f2 ld32_sym_process () + 168a
 ffffdd7fffadbc82 process_elf () + d42
 ffffdd7fffadc33d ld32_process_ifl () + 475
 ffffdd7fffad64af archive_input () + 5f
 ffffdd7fffad6b77 archive_extract_all () + e7
 ffffdd7fffad6ca4 ld32_process_archive () + ac
 ffffdd7fffadc0e1 ld32_process_ifl () + 219
 ffffdd7fffadc6ae ld32_process_open () + 96
 ffffdd7fffad3014 process_files_com () + 144
 ffffdd7fffad31ce ld32_process_files () + 56
 ffffdd7fffad5884 ld32_main () + 42c
 0000000000402ad9 main () + b9
 0000000000401e8c ???????? ()

Any thoughts on how to debug this further?

Cheers,
-Shawn
_______________________________________________
tools-compilers mailing list
[email protected]

Reply via email to