[
https://issues.apache.org/jira/browse/THRIFT-1682?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Felipe Toledo G Oliveira updated THRIFT-1682:
---------------------------------------------
Description:
If more than one thread attempts to send messages using the same Client
instance, one of the threads corrupts another thread's parameter values and
terminates program displaying Broken Pipe.
If the Service function is locked with a Mutex, the issue stops occurring.
See the following log fragment, displaying 'Unknown[*]', where '*' is a corrupt
value.
<log fragment>
Thrift: Tue Aug 28 13:12:00 2012 TSimpleServer uncaught exception.
virtual void FooHandler::bar(int32_t, zoo::StateType::type,
zoo::WeekdayType::type): id: 0, state: Unknown[152587096], weekday:
Unknown[152587096]
Thrift: Tue Aug 28 13:12:00 2012 TSocket::write_partial() send() <Host:
127.0.0.1 Port: 9000>Broken pipe
terminate called after throwing an instance of 'std::exception'
what(): std::exception
void FooPeer::bar(int32_t, zoo::StateType::type, zoo::WeekdayType::type):
Exception: write() send(): Broken pipe
void FooPeer::bar(int32_t, zoo::StateType::type, zoo::WeekdayType::type): id:
0, state: START, weekday: TUESDAY
</log fragment>
Please, check our sample code at 'BrokenPipeCpp_src.tar.gz' in order to
reproduce this error.
Regards,
Felipe
was:
If more than one thread attempts to send messages using the same Client
instance, one of the threads corrupts another thread's parameter values and
terminates program displaying Broken Pipe.
If the Service function is locked with a Mutex, the issue stops occurring.
See the following log fragment, displaying 'Unknown[*]', where '*' is a corrupt
value.
[log fragment]
Thrift: Tue Aug 28 13:12:00 2012 TSimpleServer uncaught exception.
virtual void FooHandler::bar(int32_t, zoo::StateType::type,
zoo::WeekdayType::type): id: 0, state: Unknown[152587096], weekday:
Unknown[152587096]
Thrift: Tue Aug 28 13:12:00 2012 TSocket::write_partial() send() <Host:
127.0.0.1 Port: 9000>Broken pipe
terminate called after throwing an instance of 'std::exception'
what(): std::exception
void FooPeer::bar(int32_t, zoo::StateType::type, zoo::WeekdayType::type):
Exception: write() send(): Broken pipe
void FooPeer::bar(int32_t, zoo::StateType::type, zoo::WeekdayType::type): id:
0, state: START, weekday: TUESDAY
[log fragment]
Please, check our sample code at 'BrokenPipeCpp_src.tar.gz' in order to
reproduce this error.
Regards,
Felipe
> Multiple thread calling a Service function unsafely causes message corruption
> and terminates with Broken Pipe
> -------------------------------------------------------------------------------------------------------------
>
> Key: THRIFT-1682
> URL: https://issues.apache.org/jira/browse/THRIFT-1682
> Project: Thrift
> Issue Type: Bug
> Components: C++ - Library
> Affects Versions: 0.7, 0.8, 0.9
> Environment: Linux Kernel: 2.6.32-42-generic (Ubuntu 10.04)
> Reporter: Felipe Toledo G Oliveira
> Priority: Critical
> Labels: c++, corruption, thread-safe, thread-safety, threading
> Attachments: BrokenPipeCpp_src.tar.gz
>
>
> If more than one thread attempts to send messages using the same Client
> instance, one of the threads corrupts another thread's parameter values and
> terminates program displaying Broken Pipe.
> If the Service function is locked with a Mutex, the issue stops occurring.
> See the following log fragment, displaying 'Unknown[*]', where '*' is a
> corrupt value.
> <log fragment>
> Thrift: Tue Aug 28 13:12:00 2012 TSimpleServer uncaught exception.
> virtual void FooHandler::bar(int32_t, zoo::StateType::type,
> zoo::WeekdayType::type): id: 0, state: Unknown[152587096], weekday:
> Unknown[152587096]
> Thrift: Tue Aug 28 13:12:00 2012 TSocket::write_partial() send() <Host:
> 127.0.0.1 Port: 9000>Broken pipe
> terminate called after throwing an instance of 'std::exception'
> what(): std::exception
> void FooPeer::bar(int32_t, zoo::StateType::type, zoo::WeekdayType::type):
> Exception: write() send(): Broken pipe
> void FooPeer::bar(int32_t, zoo::StateType::type, zoo::WeekdayType::type): id:
> 0, state: START, weekday: TUESDAY
> </log fragment>
> Please, check our sample code at 'BrokenPipeCpp_src.tar.gz' in order to
> reproduce this error.
> Regards,
> Felipe
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira