
Hello, The regex library contains an alignment bug that leads to bus errors on 64 bit platforms (in particular, Sun and HP). To reproduce, compile regular expression '(?>a+b|a+)bc+' with flags regex_constants::normal. This should raise SIGBUS in perl_matcher<>::push_alt(). As a fix, I suggest forcing alignment of structure saved_state in perl_matcher_common.cpp: struct saved_state { < unsigned int id; < saved_state(unsigned i) : id(i) {} -> union align -> { -> unsigned int id; -> void* dummy; -> align(unsigned i) : id(i) {} -> } id_aligned; -> saved_state(unsigned i) : id_aligned(i) {} }; and further down below: < unwinder = s_unwind_table[m_backup_state->id]; -> unwinder = s_unwind_table[m_backup_state->id_aligned.id]; The other saved_* structures that get pushed onto the stack seem fine for now. Regards, Ralph