summaryrefslogtreecommitdiff
path: root/ace/Memory_Pool.cpp
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>1999-08-09 16:23:36 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>1999-08-09 16:23:36 +0000
commit01e1634a58e618103b114b3e397025caff3bd26d (patch)
tree3a22bddca3862fa27c39259e46136420aa1d6a0a /ace/Memory_Pool.cpp
parent19576155fda4bc70a39d85fdb5e5217814c39e00 (diff)
downloadATCD-01e1634a58e618103b114b3e397025caff3bd26d.tar.gz
ChangeLogTag:Mon Aug 9 10:45:24 1999 Douglas C. Schmidt <schmidt@mambo.cs.wustl.edu>
Diffstat (limited to 'ace/Memory_Pool.cpp')
-rw-r--r--ace/Memory_Pool.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/ace/Memory_Pool.cpp b/ace/Memory_Pool.cpp
index 06877977001..b9ba8e1b3d3 100644
--- a/ace/Memory_Pool.cpp
+++ b/ace/Memory_Pool.cpp
@@ -433,18 +433,22 @@ ACE_MMAP_Memory_Pool::handle_signal (int signum, siginfo_t *siginfo, ucontext_t
// If guess_on_fault_ is true, then we want to try to remap without
// knowing the faulting address. guess_on_fault_ can only be true
// on platforms that do not provide the faulting address through
- // signals or exceptions.
- // We check to see if the mapping is up to date. If it is, then this
- // fault isn't due to this mapping and we pass it on.
+ // signals or exceptions. We check to see if the mapping is up to
+ // date. If it is, then this fault isn't due to this mapping and we
+ // pass it on.
if (guess_on_fault_)
{
- // check if the current mapping is up to date.
+ // Check if the current mapping is up to date.
off_t current_map_size = ACE_OS::filesize (this->mmap_.handle ());
- if (ACE_static_cast(size_t, current_map_size) == this->mmap_.size())
+ if (ACE_static_cast (size_t, current_map_size) == this->mmap_.size ())
{
- // It is up to date so this is a bad address.
- return -1;
+ // The mapping is up to date so this really is a bad
+ // address. Thus, remove current signal handler so process
+ // will fail with default action and core file will be
+ // written.
+ this->signal_handler_.remove_handler (SIGSEGV);
+ return 0;
}
// Extend the mapping to cover the size of the backing store.