Skip to content

Broken dlsym for older version of VxWorks#1

Merged
jwillemsen merged 4 commits intoDOCGroup:masterfrom
bjeram:master
Dec 12, 2014
Merged

Broken dlsym for older version of VxWorks#1
jwillemsen merged 4 commits intoDOCGroup:masterfrom
bjeram:master

Conversation

@bjeram
Copy link
Copy Markdown
Contributor

@bjeram bjeram commented Dec 12, 2014

it looks like ACE_OS::dlsym function is broken for older versions of VxWorks - older than 6.9.

Besides
lack of rand_r and wstring is tru also for older version of VxWork, so we can move:
define ACE_LACKS_RAND_R 1
define ACE_LACKS_STD_WSTRING
from config-vxworks6.8.h to config-vxworks6.4.h

fixed  ACE_OS::dlsym function that it works for VxWorks - older than 6.9.
changed how is it checked for VxWorks version (using: (ACE_VXWORKS < 0x690)).
lack of rand_r and wstring is tru also for older version of VxWork, so we can move:
# define ACE_LACKS_RAND_R 1
# define ACE_LACKS_STD_WSTRING
from config-vxworks6.8.h to config-vxworks6.4.h
# define ACE_LACKS_RAND_R 1
# define ACE_LACKS_STD_WSTRING
should be move to (they have been moved)
to: config-vxworks6.4.h
@jwillemsen
Copy link
Copy Markdown
Member

Changes look ok

jwillemsen added a commit that referenced this pull request Dec 12, 2014
Broken dlsym for older version of VxWorks
@jwillemsen jwillemsen merged commit 575d975 into DOCGroup:master Dec 12, 2014
@jwillemsen
Copy link
Copy Markdown
Member

Congratulations with the first pull request for ATCD!

@bjeram
Copy link
Copy Markdown
Contributor Author

bjeram commented Dec 12, 2014

Thx & I am glad to contribute

@jwillemsen
Copy link
Copy Markdown
Member

Could you maybe update your bugzilla issues?

@bjeram
Copy link
Copy Markdown
Contributor Author

bjeram commented Dec 12, 2014

done

@cmello
Copy link
Copy Markdown

cmello commented Dec 12, 2014

Nice! Congratulations! :-)

mcorino pushed a commit that referenced this pull request May 28, 2015
jwillemsen pushed a commit that referenced this pull request Sep 23, 2016
mitza-oci referenced this pull request in mitza-oci/ACE_TAO Oct 18, 2017
CMake: need to mkdir for binary output directory (makefiles)
jwillemsen added a commit that referenced this pull request Nov 11, 2019
mitza-oci pushed a commit that referenced this pull request Aug 14, 2020
GitHub Actions updates for #1179
fklassen added a commit to appneta/ACE_TAO that referenced this pull request Nov 16, 2022
Under extreme multi-thread log load tests found that occasionally two threads
would lock up on macOS, with one thread reporting EXC_BAD_ACCESS. In our load
test environment this happened after about 20 hours of testing.

This patch ensures that no log messages are written at the same time as
this->log_msg_->msg_ostream()->tell()`

Stack trace of log rotation thread getting EXC_BAD_ACCESS on `fwrite()` due to
`this->log_msg_->msg_ostream()->tell()`:

```
* thread DOCGroup#1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x00007ff81884b222 libsystem_platform.dylib`_platform_memmove$VARIANT$Haswell + 194
    frame DOCGroup#1: 0x00007ff81870833b libsystem_c.dylib`__sfvwrite + 382
    frame DOCGroup#2: 0x00007ff818729d0c libsystem_c.dylib`fwrite + 136
    frame DOCGroup#3: 0x0000000106a3dabe NetSequencer`std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(this=0x00007f80f3204328, __c=-1) at fstream:823:17
    frame DOCGroup#4: 0x0000000106a3cf31 NetSequencer`std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync(this=0x00007f80f3204328) at fstream:988:17
    frame DOCGroup#5: 0x0000000106a3caf8 NetSequencer`std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(this=0x00007f80f3204328, __off=0, __way=cur, (null)=16) at fstream:928:63
    frame DOCGroup#6: 0x0000000107b122c3 NetSequencer`std::__1::basic_streambuf<char, std::__1::char_traits<char> >::pubseekoff(this=0x00007f80f3204328, __off=0, __way=cur, __which=16) at streambuf:159:14
    frame DOCGroup#7: 0x0000000107b1109b NetSequencer`std::__1::basic_ostream<char, std::__1::char_traits<char> >::tellp(this=0x00007f80f3204320) at ostream:960:27
    frame DOCGroup#8: 0x0000000107b10b97 NetSequencer`ACE_Logging_Strategy::handle_timeout(this=0x00006000012f01b0, (null)=0x00007ff7b94f67d0, (null)=0x0000000000000000) at Logging_Strategy.cpp:432:48
    frame DOCGroup#9: 0x0000000107af7ac2 NetSequencer`ACE_Event_Handler_Handle_Timeout_Upcall::timeout(this=0x00006000022c8020, timer_queue=0x00007f80f32041c0, event_handler=0x00006000012f01b0, act=0x0000000000000000, recurring_timer=1, cur_time=0x00007ff7b94f67d0) at Event_Handler_Handle_Timeout_Upcall.cpp:42:22
    frame DOCGroup#10: 0x0000000107b38598 NetSequencer`ACE_Timer_Queue_T<ACE_Event_Handler*, ACE_Event_Handler_Handle_Timeout_Upcall, ACE_Recursive_Thread_Mutex, ACE_FPointer_Time_Policy>::upcall(this=0x00007f80f32041c0, info=0x00007ff7b94f6720, cur_time=0x00007ff7b94f67d0) at Timer_Queue_T.inl:36:27
    frame DOCGroup#11: 0x0000000107b35702 NetSequencer`ACE_Timer_Queue_T<ACE_Event_Handler*, ACE_Event_Handler_Handle_Timeout_Upcall, ACE_Recursive_Thread_Mutex, ACE_FPointer_Time_Policy>::expire(this=0x00007f80f32041c0, cur_time=0x00007ff7b94f67d0) at Timer_Queue_T.cpp:289:13
    frame DOCGroup#12: 0x0000000107b3581f NetSequencer`ACE_Timer_Queue_T<ACE_Event_Handler*, ACE_Event_Handler_Handle_Timeout_Upcall, ACE_Recursive_Thread_Mutex, ACE_FPointer_Time_Policy>::expire(this=0x00007f80f32041c0) at Timer_Queue_T.cpp:258:16
    frame DOCGroup#13: 0x0000000107b33a41 NetSequencer`ACE_Select_Reactor_T<ACE_Reactor_Token_T<ACE_Token> >::dispatch_timer_handlers(this=0x00007f80e2808e00, number_of_handlers_dispatched=0x00007ff7b94f6838) at Select_Reactor_T.cpp:1153:56
    frame DOCGroup#14: 0x0000000107b33932 NetSequencer`ACE_Select_Reactor_T<ACE_Reactor_Token_T<ACE_Token> >::dispatch(this=0x00007f80e2808e00, active_handle_count=0, dispatch_set=0x00007f80e2808e38) at Select_Reactor_T.cpp:1348:22
    frame DOCGroup#15: 0x0000000107b3acb2 NetSequencer`ACE_Select_Reactor_T<ACE_Reactor_Token_T<ACE_Token> >::handle_events_i(this=0x00007f80e2808e00, max_wait_time=0x0000000000000000) at Select_Reactor_T.cpp:1463:15
    frame DOCGroup#16: 0x0000000107b306de NetSequencer`ACE_Select_Reactor_T<ACE_Reactor_Token_T<ACE_Token> >::handle_events(this=0x00007f80e2808e00, max_wait_time=0x0000000000000000) at Select_Reactor_T.cpp:1439:16
    frame DOCGroup#17: 0x0000000107b2e859 NetSequencer`ACE_Reactor::run_reactor_event_loop(this=0x00006000020f4540, eh=0x0000000000000000)(ACE_Reactor*)) at Reactor.cpp:218:49
    frame DOCGroup#18: 0x0000000106ab72c5 NetSequencer`SeqNetServer::go(this=0x00007f80f312da48) at Server.cpp:215:49
    ...
    ```

    Another thread that is stuck on `fwrite()` when attempting to log during log rotation:

    ```
        thread DOCGroup#7, name = 'TestMaster'
        frame #0: 0x00007ff8187fdbd2 libsystem_kernel.dylib`__psynch_mutexwait + 10
        frame DOCGroup#1: 0x00007ff818835e7e libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 76
        frame DOCGroup#2: 0x00007ff818833cbb libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_slow + 205
        frame DOCGroup#3: 0x00007ff818714ae8 libsystem_c.dylib`flockfile + 31
        frame DOCGroup#4: 0x00007ff818729cc6 libsystem_c.dylib`fwrite + 66
        frame DOCGroup#5: 0x0000000106a3dabe NetSequencer`std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(this=0x00007f80f3204328, __c=49) at fstream:823:17
        frame DOCGroup#6: 0x00007ff8187a27c1 libc++.1.dylib`std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsputn(char const*, long) + 109
        frame DOCGroup#7: 0x0000000106a3f9a6 NetSequencer`std::__1::basic_streambuf<char, std::__1::char_traits<char> >::sputn(this=0x00007f80f3204328, __s="NTC (58424|123145504292864|2022-11-16 05:41:53.094817 HopTracerouteData::getRtts) testId=_42147-1GHN9QEGN_76601, ttl=10, pkt 3403, sendSize=92, recvSize=0, rtt=0, send=1668606099528987, recv=0\n", __n=193) at streambuf:229:14
        frame DOCGroup#8: 0x0000000106a3f821 NetSequencer`std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(__s=ostreambuf_iterator<char, std::__1::char_traits<char> > @ 0x000070000c09c190, __ob="NTC (58424|123145504292864|2022-11-16 05:41:53.094817 HopTracerouteData::getRtts) testId=_42147-1GHN9QEGN_76601, ttl=10, pkt 3403, sendSize=92, recvSize=0, rtt=0, send=1668606099528987, recv=0\n", __op="NTC (58424|123145504292864|2022-11-16 05:41:53.094817 HopTracerouteData::getRtts) testId=_42147-1GHN9QEGN_76601, ttl=10, pkt 3403, sendSize=92, recvSize=0, rtt=0, send=1668606099528987, recv=0\n", __oe="", __iob=0x00007f80f3204320, __fl=32 ' ') at locale:1428:26
        frame DOCGroup#9: 0x0000000106a3f4fa NetSequencer`std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(__os=0x00007f80f3204320, __str="NTC (58424|123145504292864|2022-11-16 05:41:53.094817 HopTracerouteData::getRtts) testId=_42147-1GHN9QEGN_76601, ttl=10, pkt 3403, sendSize=92, recvSize=0, rtt=0, send=1668606099528987, recv=0\n", __len=193) at ostream:718:17
        frame DOCGroup#10: 0x0000000106abfaf9 NetSequencer`std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(__os=0x00007f80f3204320, __str="NTC (58424|123145504292864|2022-11-16 05:41:53.094817 HopTracerouteData::getRtts) testId=_42147-1GHN9QEGN_76601, ttl=10, pkt 3403, sendSize=92, recvSize=0, rtt=0, send=1668606099528987, recv=0\n") at ostream:857:12
        frame DOCGroup#11: 0x0000000107b0eb7a NetSequencer`ACE_Log_Record::print(this=0x000070000c09cf20, host_name=0x0000000000000000, verbose_flag=5, s=0x00007f80f3204320) at Log_Record.cpp:427:13
        frame DOCGroup#12: 0x0000000107b0b81d NetSequencer`ACE_Log_Msg::log(this=0x00007f810400c000, log_record=0x000070000c09cf20, suppress_stderr=0) at Log_Msg.cpp:2932:20
        frame DOCGroup#13: 0x0000000107b0aed9 NetSequencer`ACE_Log_Msg::log(this=0x00007f810400c000, format_str="", log_priority=LM_NOTICE, argp=0x000070000c09e1b0, category=0x0000000000000000) at Log_Msg.cpp:2200:22
        frame DOCGroup#14: 0x000000010750e196 NetSequencer`APN::LogUtil::log(logPriority=LM_NOTICE, formatStr="NTC%I (%P|%t|%D HopTracerouteData::getRtts) testId=%s, ttl=%u, pkt %u, sendSize=%u, recvSize=%u, rtt=%u, send=%Q, recv=%Q\n") at macros.cpp:44:19
...
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants