> Why does Solaris 10 on SparcIII not suffer from this problem, is
> unclear to me.
Because there is a shortcut. VIS2-capable CPUs are excused from
libdevinfo voodoo and USIII is VIS2-capable CPU. Because all so-far
observed VIS2-capable CPUs has identical qualities from OpenSSL
viewpoint. VIS2 capability is determined with sysinfo(SI_ISALIST).
> Unfortunatelly, (our) support for Solaris is system limited, and we
> do not have a contract on our UltraII box :-( I can’t ask Sun for a
> fix. Can you please provide me the sources for reproduction on
> Solaris x86.
Can't you write following yourself:
#include <libdevinfo.h>
static int walk_nodename(di_node_t node, void *p)
{ return DI_WALK_CONTINUE; }
int main()
{
di_node_t root_node;
if ((root_node = di_init("/",DINFOSUBTREE))!=DI_NODE_NIL)
{
di_walk_node(root_node,DI_WALK_SIBFIRST,
NULL,walk_nodename);
di_fini(root_node);
}
}
Link with -ldevinfo - works, with -ldevinfo -lmalloc - crashes.
> As act of desperation I've added call to mallopt(M_KEEP,0) prior dlopen
> and SIGSEGV ... gone. Can you check this with your application? Note
> that it wouldn't work to add the call to your main() function, because
> OPENSSL_cpuid is called earlier from .init segment. You have to add it
> to OPENSSL_cpuid_setup in crypto/sparcv9cap.c...
Pleeeeeeeaaaaase.
It's also possible to switch to the detection procedure used on Linux
(in which case it might have to be refined). This procedure relies on
SIGILL to determine CPU capabilities. A.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [email protected]
Automated List Manager [email protected]