You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/06/07 07:31:43 UTC
[plc4x] branch develop updated: fix(plc4go): always supply stack when recovering
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new 78ae3b6430 fix(plc4go): always supply stack when recovering
78ae3b6430 is described below
commit 78ae3b6430d329b2db02b5226f251e6e68db7049
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Jun 7 09:31:35 2023 +0200
fix(plc4go): always supply stack when recovering
---
plc4go/internal/ads/Browser.go | 3 ++-
plc4go/internal/ads/Connection.go | 5 +++--
plc4go/internal/ads/Discoverer.go | 3 ++-
plc4go/internal/ads/Interactions.go | 13 +++++++------
plc4go/internal/ads/Reader.go | 5 +++--
plc4go/internal/ads/Subscriber.go | 5 +++--
plc4go/internal/ads/Writer.go | 5 +++--
plc4go/internal/bacnetip/Connection.go | 5 +++--
plc4go/internal/cbus/Browser.go | 3 ++-
plc4go/internal/cbus/Connection.go | 7 ++++---
plc4go/internal/cbus/Discoverer.go | 7 ++++---
plc4go/internal/cbus/Reader.go | 3 ++-
plc4go/internal/cbus/Subscriber.go | 3 ++-
plc4go/internal/cbus/Writer.go | 3 ++-
plc4go/internal/eip/Connection.go | 5 +++--
plc4go/internal/eip/Reader.go | 3 ++-
plc4go/internal/eip/Writer.go | 3 ++-
plc4go/internal/knxnetip/Connection.go | 9 +++++----
.../knxnetip/ConnectionDriverSpecificOperations.go | 15 ++++++++-------
plc4go/internal/knxnetip/ConnectionHelper.go | 3 ++-
plc4go/internal/knxnetip/Discoverer.go | 5 +++--
plc4go/internal/knxnetip/Reader.go | 3 ++-
plc4go/internal/knxnetip/Subscriber.go | 3 ++-
plc4go/internal/modbus/Connection.go | 3 ++-
plc4go/internal/modbus/ModbusAsciiDriver.go | 3 ++-
plc4go/internal/modbus/ModbusRtuDriver.go | 3 ++-
plc4go/internal/modbus/ModbusTcpDriver.go | 3 ++-
plc4go/internal/modbus/Reader.go | 3 ++-
plc4go/internal/s7/Connection.go | 3 ++-
plc4go/internal/s7/Reader.go | 3 ++-
plc4go/internal/s7/Writer.go | 3 ++-
plc4go/internal/simulated/Connection.go | 7 ++++---
plc4go/internal/simulated/Reader.go | 3 ++-
plc4go/internal/simulated/Writer.go | 3 ++-
plc4go/spi/default/DefaultBrowser.go | 3 ++-
plc4go/spi/default/DefaultCodec.go | 2 +-
plc4go/spi/default/DefaultConnection.go | 5 +++--
plc4go/spi/model/DefaultPlcReadRequest.go | 3 ++-
plc4go/spi/model/DefaultPlcWriteRequest.go | 3 ++-
plc4go/spi/pool/WorkerPool.go | 8 ++++----
plc4go/spi/transports/pcap/Transport.go | 3 ++-
.../transports/utils/DefaultBufferedTransportInstance.go | 3 ++-
plc4go/spi/utils/Net.go | 5 +++--
43 files changed, 116 insertions(+), 75 deletions(-)
diff --git a/plc4go/internal/ads/Browser.go b/plc4go/internal/ads/Browser.go
index 19c65d2cd0..4a0590d2ba 100644
--- a/plc4go/internal/ads/Browser.go
+++ b/plc4go/internal/ads/Browser.go
@@ -22,6 +22,7 @@ package ads
import (
"context"
"github.com/pkg/errors"
+ "runtime/debug"
"strings"
"github.com/apache/plc4x/plc4go/internal/ads/model"
@@ -45,7 +46,7 @@ func (m *Connection) BrowseWithInterceptor(ctx context.Context, browseRequest ap
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcBrowseRequestResult(browseRequest, nil, errors.Errorf("Recovered from panic: %v", err))
+ result <- spiModel.NewDefaultPlcBrowseRequestResult(browseRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
responseCodes := map[string]apiModel.PlcResponseCode{}
diff --git a/plc4go/internal/ads/Connection.go b/plc4go/internal/ads/Connection.go
index 1b6d034a86..f48364f943 100644
--- a/plc4go/internal/ads/Connection.go
+++ b/plc4go/internal/ads/Connection.go
@@ -26,6 +26,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/tracer"
"github.com/rs/zerolog"
+ "runtime/debug"
"strconv"
"strings"
@@ -113,7 +114,7 @@ func (m *Connection) ConnectWithContext(ctx context.Context) <-chan plc4go.PlcCo
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- _default.NewDefaultPlcConnectionCloseResult(nil, errors.Errorf("Recovered from panic: %v", err))
+ ch <- _default.NewDefaultPlcConnectionCloseResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
err := m.messageCodec.Connect()
@@ -170,7 +171,7 @@ func (m *Connection) setupConnection(ctx context.Context, ch chan plc4go.PlcConn
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed: %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
for message := range defaultIncomingMessageChannel {
diff --git a/plc4go/internal/ads/Discoverer.go b/plc4go/internal/ads/Discoverer.go
index 89fb53e01e..8204904fbe 100644
--- a/plc4go/internal/ads/Discoverer.go
+++ b/plc4go/internal/ads/Discoverer.go
@@ -27,6 +27,7 @@ import (
"github.com/rs/zerolog"
"net"
"net/url"
+ "runtime/debug"
"strconv"
"time"
@@ -145,7 +146,7 @@ func (d *Discoverer) Discover(ctx context.Context, callback func(event apiModel.
go func(discoveryItem *discovery) {
defer func() {
if err := recover(); err != nil {
- d.log.Error().Msgf("panic-ed %v", err)
+ d.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
buf := make([]byte, 1024)
diff --git a/plc4go/internal/ads/Interactions.go b/plc4go/internal/ads/Interactions.go
index b6d5ecc9ad..3e4fa2f88e 100644
--- a/plc4go/internal/ads/Interactions.go
+++ b/plc4go/internal/ads/Interactions.go
@@ -22,6 +22,7 @@ package ads
import (
"context"
"fmt"
+ "runtime/debug"
"time"
"github.com/apache/plc4x/plc4go/protocols/ads/readwrite/model"
@@ -33,7 +34,7 @@ func (m *Connection) ExecuteAdsReadDeviceInfoRequest(ctx context.Context) (model
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
request := m.NewAdsReadDeviceInfoRequest()
@@ -74,7 +75,7 @@ func (m *Connection) ExecuteAdsReadRequest(ctx context.Context, indexGroup uint3
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
request := m.NewAdsReadRequest(indexGroup, indexOffset, length)
@@ -115,7 +116,7 @@ func (m *Connection) ExecuteAdsWriteRequest(ctx context.Context, indexGroup uint
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
request := m.NewAdsWriteRequest(indexGroup, indexOffset, data)
@@ -156,7 +157,7 @@ func (m *Connection) ExecuteAdsReadWriteRequest(ctx context.Context, indexGroup
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
request := m.NewAdsReadWriteRequest(indexGroup, indexOffset, readLength, items, writeData)
@@ -197,7 +198,7 @@ func (m *Connection) ExecuteAdsAddDeviceNotificationRequest(ctx context.Context,
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
request := m.NewAdsAddDeviceNotificationRequest(indexGroup, indexOffset, length, transmissionMode, maxDelay, cycleTime)
@@ -238,7 +239,7 @@ func (m *Connection) ExecuteAdsDeleteDeviceNotificationRequest(ctx context.Conte
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
request := m.NewAdsDeleteDeviceNotificationRequest(notificationHandle)
diff --git a/plc4go/internal/ads/Reader.go b/plc4go/internal/ads/Reader.go
index b0b4255a4e..899595600a 100644
--- a/plc4go/internal/ads/Reader.go
+++ b/plc4go/internal/ads/Reader.go
@@ -23,6 +23,7 @@ import (
"context"
"encoding/binary"
"fmt"
+ "runtime/debug"
"strings"
"github.com/apache/plc4x/plc4go/internal/ads/model"
@@ -46,7 +47,7 @@ func (m *Connection) Read(ctx context.Context, readRequest apiModel.PlcReadReque
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
if len(readRequest.GetTagNames()) <= 1 {
@@ -97,7 +98,7 @@ func (m *Connection) singleRead(ctx context.Context, readRequest apiModel.PlcRea
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
response, err := m.ExecuteAdsReadRequest(ctx, directAdsTag.IndexGroup, directAdsTag.IndexOffset, directAdsTag.DataType.GetSize())
diff --git a/plc4go/internal/ads/Subscriber.go b/plc4go/internal/ads/Subscriber.go
index 5442b57184..232ce42816 100644
--- a/plc4go/internal/ads/Subscriber.go
+++ b/plc4go/internal/ads/Subscriber.go
@@ -22,6 +22,7 @@ package ads
import (
"context"
"github.com/apache/plc4x/plc4go/spi/options"
+ "runtime/debug"
"time"
dirverModel "github.com/apache/plc4x/plc4go/internal/ads/model"
@@ -99,7 +100,7 @@ func (m *Connection) Subscribe(ctx context.Context, subscriptionRequest apiModel
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
// Iterate over all sub-results
@@ -128,7 +129,7 @@ func (m *Connection) subscribe(ctx context.Context, subscriptionRequest apiModel
go func() {
defer func() {
if err := recover(); err != nil {
- responseChan <- spiModel.NewDefaultPlcSubscriptionRequestResult(subscriptionRequest, nil, errors.Errorf("panic-ed %v", err))
+ responseChan <- spiModel.NewDefaultPlcSubscriptionRequestResult(subscriptionRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
// At this point we are sure to only have single item direct tag requests.
diff --git a/plc4go/internal/ads/Writer.go b/plc4go/internal/ads/Writer.go
index 95ad6e5131..1629546797 100644
--- a/plc4go/internal/ads/Writer.go
+++ b/plc4go/internal/ads/Writer.go
@@ -23,6 +23,7 @@ import (
"context"
"encoding/binary"
"fmt"
+ "runtime/debug"
"strings"
"github.com/apache/plc4x/plc4go/internal/ads/model"
@@ -45,7 +46,7 @@ func (m *Connection) Write(ctx context.Context, writeRequest apiModel.PlcWriteRe
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
if len(writeRequest.GetTagNames()) <= 1 {
@@ -106,7 +107,7 @@ func (m *Connection) singleWrite(ctx context.Context, writeRequest apiModel.PlcW
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
response, err := m.ExecuteAdsWriteRequest(ctx, directAdsTag.IndexGroup, directAdsTag.IndexOffset, data)
diff --git a/plc4go/internal/bacnetip/Connection.go b/plc4go/internal/bacnetip/Connection.go
index 6bb7a865e0..049a5c9bb4 100644
--- a/plc4go/internal/bacnetip/Connection.go
+++ b/plc4go/internal/bacnetip/Connection.go
@@ -28,6 +28,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/utils"
"github.com/pkg/errors"
"github.com/rs/zerolog"
+ "runtime/debug"
"sync"
"time"
@@ -89,14 +90,14 @@ func (c *Connection) ConnectWithContext(ctx context.Context) <-chan plc4go.PlcCo
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v", err))
+ ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
connectionConnectResult := <-c.DefaultConnection.ConnectWithContext(ctx)
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v", err))
+ ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
for c.IsConnected() {
diff --git a/plc4go/internal/cbus/Browser.go b/plc4go/internal/cbus/Browser.go
index 3ae33a08c7..89d8f29350 100644
--- a/plc4go/internal/cbus/Browser.go
+++ b/plc4go/internal/cbus/Browser.go
@@ -22,6 +22,7 @@ package cbus
import (
"context"
"fmt"
+ "runtime/debug"
"time"
plc4go "github.com/apache/plc4x/plc4go/pkg/api"
@@ -273,7 +274,7 @@ func (m Browser) getInstalledUnitAddressBytes(ctx context.Context) (map[byte]any
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack:\n%s", err, debug.Stack())
}
}()
defer readCtxCancel()
diff --git a/plc4go/internal/cbus/Connection.go b/plc4go/internal/cbus/Connection.go
index 88e574a986..9d65646a7a 100644
--- a/plc4go/internal/cbus/Connection.go
+++ b/plc4go/internal/cbus/Connection.go
@@ -26,6 +26,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/tracer"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
+ "runtime/debug"
"sync"
"time"
@@ -123,7 +124,7 @@ func (c *Connection) ConnectWithContext(ctx context.Context) <-chan plc4go.PlcCo
go func() {
defer func() {
if err := recover(); err != nil {
- c.fireConnectionError(errors.Errorf("panic-ed %v", err), ch)
+ c.fireConnectionError(errors.Errorf("panic-ed %v. Stack:\n%s", err, debug.Stack()), ch)
}
}()
if err := c.messageCodec.Connect(); err != nil {
@@ -228,7 +229,7 @@ func (c *Connection) startSubscriptionHandler() {
go func() {
defer func() {
if err := recover(); err != nil {
- c.log.Error().Msgf("panic-ed %v", err)
+ c.log.Error().Msgf("panic-ed %v. Stack:\n%s", err, debug.Stack())
}
}()
c.log.Debug().Msg("SAL handler stated")
@@ -248,7 +249,7 @@ func (c *Connection) startSubscriptionHandler() {
go func() {
defer func() {
if err := recover(); err != nil {
- c.log.Error().Msgf("panic-ed %v", err)
+ c.log.Error().Msgf("panic-ed %v. Stack:\n%s", err, debug.Stack())
}
}()
c.log.Debug().Msg("default MMI started")
diff --git a/plc4go/internal/cbus/Discoverer.go b/plc4go/internal/cbus/Discoverer.go
index c6495aaa7f..6e06869113 100644
--- a/plc4go/internal/cbus/Discoverer.go
+++ b/plc4go/internal/cbus/Discoverer.go
@@ -28,6 +28,7 @@ import (
"github.com/rs/zerolog"
"net"
"net/url"
+ "runtime/debug"
"sync"
"sync/atomic"
"time"
@@ -90,7 +91,7 @@ func (d *Discoverer) Discover(ctx context.Context, callback func(event apiModel.
go func(netInterface addressProvider, interfaceLog zerolog.Logger) {
defer func() {
if err := recover(); err != nil {
- interfaceLog.Error().Msgf("panic-ed %v", err)
+ interfaceLog.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
defer func() { wg.Done() }()
@@ -124,7 +125,7 @@ func (d *Discoverer) Discover(ctx context.Context, callback func(event apiModel.
go func(addressLogger zerolog.Logger) {
defer func() {
if err := recover(); err != nil {
- addressLogger.Error().Msgf("panic-ed %v", err)
+ addressLogger.Error().Msgf("panic-ed %v. Stack: %s; ", err, debug.Stack())
}
}()
defer func() { wg.Done() }()
@@ -157,7 +158,7 @@ func (d *Discoverer) Discover(ctx context.Context, callback func(event apiModel.
go func() {
defer func() {
if err := recover(); err != nil {
- d.log.Error().Msgf("panic-ed %v", err)
+ d.log.Error().Msgf("panic-ed %v. Stack: %s; ", err, debug.Stack())
}
}()
for transportInstance := range transportInstances {
diff --git a/plc4go/internal/cbus/Reader.go b/plc4go/internal/cbus/Reader.go
index e57f344224..f44fbadf41 100644
--- a/plc4go/internal/cbus/Reader.go
+++ b/plc4go/internal/cbus/Reader.go
@@ -25,6 +25,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
+ "runtime/debug"
"sync"
"time"
@@ -64,7 +65,7 @@ func (m *Reader) Read(ctx context.Context, readRequest apiModel.PlcReadRequest)
func (m *Reader) readSync(ctx context.Context, readRequest apiModel.PlcReadRequest, result chan apiModel.PlcReadRequestResult) {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
numTags := len(readRequest.GetTagNames())
diff --git a/plc4go/internal/cbus/Subscriber.go b/plc4go/internal/cbus/Subscriber.go
index 45f3f4318d..e0fef87a17 100644
--- a/plc4go/internal/cbus/Subscriber.go
+++ b/plc4go/internal/cbus/Subscriber.go
@@ -25,6 +25,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/pkg/errors"
"github.com/rs/zerolog"
+ "runtime/debug"
"strings"
"time"
@@ -56,7 +57,7 @@ func (m *Subscriber) Subscribe(_ context.Context, subscriptionRequest apiModel.P
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcSubscriptionRequestResult(subscriptionRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcSubscriptionRequestResult(subscriptionRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
internalPlcSubscriptionRequest := subscriptionRequest.(*spiModel.DefaultPlcSubscriptionRequest)
diff --git a/plc4go/internal/cbus/Writer.go b/plc4go/internal/cbus/Writer.go
index 8dbaf855fe..43fc194634 100644
--- a/plc4go/internal/cbus/Writer.go
+++ b/plc4go/internal/cbus/Writer.go
@@ -24,6 +24,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
+ "runtime/debug"
"sync"
"time"
@@ -58,7 +59,7 @@ func (m *Writer) Write(ctx context.Context, writeRequest apiModel.PlcWriteReques
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
numTags := len(writeRequest.GetTagNames())
diff --git a/plc4go/internal/eip/Connection.go b/plc4go/internal/eip/Connection.go
index b6beeb6005..9ef70ea2cd 100644
--- a/plc4go/internal/eip/Connection.go
+++ b/plc4go/internal/eip/Connection.go
@@ -26,6 +26,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/tracer"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
+ "runtime/debug"
"time"
"github.com/apache/plc4x/plc4go/pkg/api"
@@ -125,7 +126,7 @@ func (m *Connection) ConnectWithContext(ctx context.Context) <-chan plc4go.PlcCo
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v", err))
+ ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
err := m.messageCodec.Connect()
@@ -156,7 +157,7 @@ func (m *Connection) Close() <-chan plc4go.PlcConnectionCloseResult {
go func() {
defer func() {
if err := recover(); err != nil {
- result <- _default.NewDefaultPlcConnectionCloseResult(nil, errors.Errorf("panic-ed %v", err))
+ result <- _default.NewDefaultPlcConnectionCloseResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
m.log.Debug().Msg("Sending UnregisterSession EIP Packet")
diff --git a/plc4go/internal/eip/Reader.go b/plc4go/internal/eip/Reader.go
index f0ebcf1cd8..81459228a4 100644
--- a/plc4go/internal/eip/Reader.go
+++ b/plc4go/internal/eip/Reader.go
@@ -27,6 +27,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
"regexp"
+ "runtime/debug"
"strconv"
"time"
@@ -68,7 +69,7 @@ func (m *Reader) Read(ctx context.Context, readRequest apiModel.PlcReadRequest)
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
classSegment := readWriteModel.NewLogicalSegment(readWriteModel.NewClassID(0, 6))
diff --git a/plc4go/internal/eip/Writer.go b/plc4go/internal/eip/Writer.go
index 6ebb162028..7700df8c60 100644
--- a/plc4go/internal/eip/Writer.go
+++ b/plc4go/internal/eip/Writer.go
@@ -25,6 +25,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
+ "runtime/debug"
"strings"
apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
@@ -64,7 +65,7 @@ func (m Writer) Write(ctx context.Context, writeRequest apiModel.PlcWriteRequest
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
items := make([]readWriteModel.CipService, len(writeRequest.GetTagNames()))
diff --git a/plc4go/internal/knxnetip/Connection.go b/plc4go/internal/knxnetip/Connection.go
index 887e9548da..26f5ae8ba8 100644
--- a/plc4go/internal/knxnetip/Connection.go
+++ b/plc4go/internal/knxnetip/Connection.go
@@ -27,6 +27,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/tracer"
"github.com/rs/zerolog"
+ "runtime/debug"
"strconv"
"strings"
"sync"
@@ -233,7 +234,7 @@ func (m *Connection) ConnectWithContext(ctx context.Context) <-chan plc4go.PlcCo
go func() {
defer func() {
if err := recover(); err != nil {
- result <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v", err))
+ result <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
// Open the UDP Connection
@@ -305,7 +306,7 @@ func (m *Connection) ConnectWithContext(ctx context.Context) <-chan plc4go.PlcCo
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
defaultIncomingMessageChannel := m.messageCodec.GetDefaultIncomingMessageChannel()
@@ -405,7 +406,7 @@ func (m *Connection) Close() <-chan plc4go.PlcConnectionCloseResult {
go func() {
defer func() {
if err := recover(); err != nil {
- result <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v", err))
+ result <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
// Stop the connection-state checker.
@@ -468,7 +469,7 @@ func (m *Connection) Ping() <-chan plc4go.PlcConnectionPingResult {
go func() {
defer func() {
if err := recover(); err != nil {
- result <- _default.NewDefaultPlcConnectionPingResult(errors.Errorf("panic-ed %v", err))
+ result <- _default.NewDefaultPlcConnectionPingResult(errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
// Send the connection state request
diff --git a/plc4go/internal/knxnetip/ConnectionDriverSpecificOperations.go b/plc4go/internal/knxnetip/ConnectionDriverSpecificOperations.go
index 44173c8334..53d4cc37a2 100644
--- a/plc4go/internal/knxnetip/ConnectionDriverSpecificOperations.go
+++ b/plc4go/internal/knxnetip/ConnectionDriverSpecificOperations.go
@@ -22,6 +22,7 @@ package knxnetip
import (
"context"
"math"
+ "runtime/debug"
"strconv"
"time"
@@ -65,7 +66,7 @@ func (m *Connection) ReadGroupAddress(ctx context.Context, groupAddress []byte,
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
groupAddressReadResponse, err := m.sendGroupAddressReadRequest(ctx, groupAddress)
@@ -125,7 +126,7 @@ func (m *Connection) DeviceConnect(ctx context.Context, targetAddress driverMode
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
// If we're already connected, use that connection instead.
@@ -220,7 +221,7 @@ func (m *Connection) DeviceDisconnect(ctx context.Context, targetAddress driverM
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
if connection, ok := m.DeviceConnections[targetAddress]; ok {
@@ -258,7 +259,7 @@ func (m *Connection) DeviceAuthenticate(ctx context.Context, targetAddress drive
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
// Check if there is already a connection available,
@@ -318,7 +319,7 @@ func (m *Connection) DeviceReadProperty(ctx context.Context, targetAddress drive
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
// Check if there is already a connection available,
@@ -402,7 +403,7 @@ func (m *Connection) DeviceReadPropertyDescriptor(ctx context.Context, targetAdd
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
// Check if there is already a connection available,
@@ -467,7 +468,7 @@ func (m *Connection) DeviceReadMemory(ctx context.Context, targetAddress driverM
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
// Set a default datatype, if none is specified
diff --git a/plc4go/internal/knxnetip/ConnectionHelper.go b/plc4go/internal/knxnetip/ConnectionHelper.go
index d68cdd5626..be8e2bfd6a 100644
--- a/plc4go/internal/knxnetip/ConnectionHelper.go
+++ b/plc4go/internal/knxnetip/ConnectionHelper.go
@@ -24,6 +24,7 @@ import (
"fmt"
"math"
"net"
+ "runtime/debug"
"strconv"
"sync/atomic"
"time"
@@ -54,7 +55,7 @@ func (m *Connection) handleIncomingTunnelingRequest(ctx context.Context, tunneli
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
lDataInd, ok := tunnelingRequest.GetCemi().(driverModel.LDataIndExactly)
diff --git a/plc4go/internal/knxnetip/Discoverer.go b/plc4go/internal/knxnetip/Discoverer.go
index 092b4fb3b2..c4fd9310be 100644
--- a/plc4go/internal/knxnetip/Discoverer.go
+++ b/plc4go/internal/knxnetip/Discoverer.go
@@ -27,6 +27,7 @@ import (
"github.com/rs/zerolog"
"net"
"net/url"
+ "runtime/debug"
"sync"
"sync/atomic"
"time"
@@ -104,7 +105,7 @@ func (d *Discoverer) Discover(ctx context.Context, callback func(event apiModel.
go func(netInterface net.Interface) {
defer func() {
if err := recover(); err != nil {
- d.log.Error().Msgf("panic-ed %v", err)
+ d.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
defer func() { wg.Done() }()
@@ -142,7 +143,7 @@ func (d *Discoverer) Discover(ctx context.Context, callback func(event apiModel.
go func() {
defer func() {
if err := recover(); err != nil {
- d.log.Error().Msgf("panic-ed %v", err)
+ d.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
for transportInstance := range transportInstances {
diff --git a/plc4go/internal/knxnetip/Reader.go b/plc4go/internal/knxnetip/Reader.go
index 4d4d2f7e60..452edbe380 100644
--- a/plc4go/internal/knxnetip/Reader.go
+++ b/plc4go/internal/knxnetip/Reader.go
@@ -23,6 +23,7 @@ import (
"context"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/rs/zerolog"
+ "runtime/debug"
"strconv"
"strings"
"time"
@@ -56,7 +57,7 @@ func (m Reader) Read(ctx context.Context, readRequest apiModel.PlcReadRequest) <
go func() {
defer func() {
if err := recover(); err != nil {
- resultChan <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v", err))
+ resultChan <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
responseCodes := map[string]apiModel.PlcResponseCode{}
diff --git a/plc4go/internal/knxnetip/Subscriber.go b/plc4go/internal/knxnetip/Subscriber.go
index 3c6f8b0a4f..e541455d89 100644
--- a/plc4go/internal/knxnetip/Subscriber.go
+++ b/plc4go/internal/knxnetip/Subscriber.go
@@ -24,6 +24,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/pkg/errors"
"github.com/rs/zerolog"
+ "runtime/debug"
"time"
apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
@@ -55,7 +56,7 @@ func (m *Subscriber) Subscribe(ctx context.Context, subscriptionRequest apiModel
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcSubscriptionRequestResult(subscriptionRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcSubscriptionRequestResult(subscriptionRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
internalPlcSubscriptionRequest := subscriptionRequest.(*spiModel.DefaultPlcSubscriptionRequest)
diff --git a/plc4go/internal/modbus/Connection.go b/plc4go/internal/modbus/Connection.go
index 854a29af8f..f6e1236913 100644
--- a/plc4go/internal/modbus/Connection.go
+++ b/plc4go/internal/modbus/Connection.go
@@ -25,6 +25,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/tracer"
"github.com/rs/zerolog"
+ "runtime/debug"
"time"
"github.com/apache/plc4x/plc4go/pkg/api"
@@ -106,7 +107,7 @@ func (m *Connection) Ping() <-chan plc4go.PlcConnectionPingResult {
go func() {
defer func() {
if err := recover(); err != nil {
- result <- _default.NewDefaultPlcConnectionPingResult(errors.Errorf("panic-ed %v", err))
+ result <- _default.NewDefaultPlcConnectionPingResult(errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
diagnosticRequestPdu := readWriteModel.NewModbusPDUDiagnosticRequest(0, 0x42)
diff --git a/plc4go/internal/modbus/ModbusAsciiDriver.go b/plc4go/internal/modbus/ModbusAsciiDriver.go
index becf7180cb..783f1327ac 100644
--- a/plc4go/internal/modbus/ModbusAsciiDriver.go
+++ b/plc4go/internal/modbus/ModbusAsciiDriver.go
@@ -30,6 +30,7 @@ import (
"github.com/pkg/errors"
"github.com/rs/zerolog"
"net/url"
+ "runtime/debug"
"strconv"
)
@@ -74,7 +75,7 @@ func (m ModbusAsciiDriver) GetConnectionWithContext(ctx context.Context, transpo
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
for {
diff --git a/plc4go/internal/modbus/ModbusRtuDriver.go b/plc4go/internal/modbus/ModbusRtuDriver.go
index 710c4c3a4a..62120ca44f 100644
--- a/plc4go/internal/modbus/ModbusRtuDriver.go
+++ b/plc4go/internal/modbus/ModbusRtuDriver.go
@@ -30,6 +30,7 @@ import (
"github.com/pkg/errors"
"github.com/rs/zerolog"
"net/url"
+ "runtime/debug"
"strconv"
)
@@ -74,7 +75,7 @@ func (m ModbusRtuDriver) GetConnectionWithContext(ctx context.Context, transport
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
for {
diff --git a/plc4go/internal/modbus/ModbusTcpDriver.go b/plc4go/internal/modbus/ModbusTcpDriver.go
index da5e0494f2..7267bdede8 100644
--- a/plc4go/internal/modbus/ModbusTcpDriver.go
+++ b/plc4go/internal/modbus/ModbusTcpDriver.go
@@ -30,6 +30,7 @@ import (
"github.com/pkg/errors"
"github.com/rs/zerolog"
"net/url"
+ "runtime/debug"
"strconv"
)
@@ -74,7 +75,7 @@ func (m ModbusTcpDriver) GetConnectionWithContext(ctx context.Context, transport
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
for {
diff --git a/plc4go/internal/modbus/Reader.go b/plc4go/internal/modbus/Reader.go
index 29d2689dc1..6f37d5ef12 100644
--- a/plc4go/internal/modbus/Reader.go
+++ b/plc4go/internal/modbus/Reader.go
@@ -24,6 +24,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/rs/zerolog"
"math"
+ "runtime/debug"
"sync/atomic"
"time"
@@ -60,7 +61,7 @@ func (m *Reader) Read(ctx context.Context, readRequest apiModel.PlcReadRequest)
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
if len(readRequest.GetTagNames()) != 1 {
diff --git a/plc4go/internal/s7/Connection.go b/plc4go/internal/s7/Connection.go
index 867f44b6a9..40933db93d 100644
--- a/plc4go/internal/s7/Connection.go
+++ b/plc4go/internal/s7/Connection.go
@@ -27,6 +27,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
"reflect"
+ "runtime/debug"
"strings"
"sync"
@@ -118,7 +119,7 @@ func (m *Connection) ConnectWithContext(ctx context.Context) <-chan plc4go.PlcCo
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v", err))
+ ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
err := m.messageCodec.Connect()
diff --git a/plc4go/internal/s7/Reader.go b/plc4go/internal/s7/Reader.go
index 59ea75bc28..967808b7d2 100644
--- a/plc4go/internal/s7/Reader.go
+++ b/plc4go/internal/s7/Reader.go
@@ -24,6 +24,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
+ "runtime/debug"
"time"
apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
@@ -60,7 +61,7 @@ func (m *Reader) Read(ctx context.Context, readRequest apiModel.PlcReadRequest)
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
diff --git a/plc4go/internal/s7/Writer.go b/plc4go/internal/s7/Writer.go
index 22761cd09a..46c668cdf2 100644
--- a/plc4go/internal/s7/Writer.go
+++ b/plc4go/internal/s7/Writer.go
@@ -24,6 +24,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/rs/zerolog"
+ "runtime/debug"
"time"
apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
@@ -58,7 +59,7 @@ func (m Writer) Write(ctx context.Context, writeRequest apiModel.PlcWriteRequest
go func() {
defer func() {
if err := recover(); err != nil {
- result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v", err))
+ result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
parameterItems := make([]readWriteModel.S7VarRequestParameterItem, len(writeRequest.GetTagNames()))
diff --git a/plc4go/internal/simulated/Connection.go b/plc4go/internal/simulated/Connection.go
index f429056a1a..6659f76318 100644
--- a/plc4go/internal/simulated/Connection.go
+++ b/plc4go/internal/simulated/Connection.go
@@ -22,6 +22,7 @@ package simulated
import (
"context"
"github.com/apache/plc4x/plc4go/spi/tracer"
+ "runtime/debug"
"strconv"
"time"
@@ -90,7 +91,7 @@ func (c *Connection) ConnectWithContext(_ context.Context) <-chan plc4go.PlcConn
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- _default.NewDefaultPlcConnectionCloseResult(nil, errors.Errorf("panic-ed %v", err))
+ ch <- _default.NewDefaultPlcConnectionCloseResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
// Check if the connection was already connected
@@ -146,7 +147,7 @@ func (c *Connection) Close() <-chan plc4go.PlcConnectionCloseResult {
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v", err))
+ ch <- _default.NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
// Check if the connection is connected.
@@ -192,7 +193,7 @@ func (c *Connection) Ping() <-chan plc4go.PlcConnectionPingResult {
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- _default.NewDefaultPlcConnectionPingResult(errors.Errorf("panic-ed %v", err))
+ ch <- _default.NewDefaultPlcConnectionPingResult(errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
// Check if the connection is connected
diff --git a/plc4go/internal/simulated/Reader.go b/plc4go/internal/simulated/Reader.go
index 4470c3c1b5..41e14052a8 100644
--- a/plc4go/internal/simulated/Reader.go
+++ b/plc4go/internal/simulated/Reader.go
@@ -25,6 +25,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/tracer"
"github.com/pkg/errors"
"github.com/rs/zerolog"
+ "runtime/debug"
"strconv"
"time"
@@ -56,7 +57,7 @@ func (r *Reader) Read(_ context.Context, readRequest apiModel.PlcReadRequest) <-
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v", err))
+ ch <- spiModel.NewDefaultPlcReadRequestResult(readRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
var txId string
diff --git a/plc4go/internal/simulated/Writer.go b/plc4go/internal/simulated/Writer.go
index f2fc95cfa0..616c8ace31 100644
--- a/plc4go/internal/simulated/Writer.go
+++ b/plc4go/internal/simulated/Writer.go
@@ -25,6 +25,7 @@ import (
"github.com/apache/plc4x/plc4go/spi/tracer"
"github.com/pkg/errors"
"github.com/rs/zerolog"
+ "runtime/debug"
"strconv"
"time"
@@ -55,7 +56,7 @@ func (w *Writer) Write(_ context.Context, writeRequest apiModel.PlcWriteRequest)
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v", err))
+ ch <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
var txId string
diff --git a/plc4go/spi/default/DefaultBrowser.go b/plc4go/spi/default/DefaultBrowser.go
index 34c7ae12b7..af614e445c 100644
--- a/plc4go/spi/default/DefaultBrowser.go
+++ b/plc4go/spi/default/DefaultBrowser.go
@@ -26,6 +26,7 @@ import (
spiModel "github.com/apache/plc4x/plc4go/spi/model"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/rs/zerolog"
+ "runtime/debug"
)
// DefaultBrowserRequirements adds required methods to Browser that are needed when using DefaultBrowser
@@ -74,7 +75,7 @@ func (m *defaultBrowser) BrowseWithInterceptor(ctx context.Context, browseReques
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Interface("err", err).Msg("caught panic")
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
responseCodes := map[string]apiModel.PlcResponseCode{}
diff --git a/plc4go/spi/default/DefaultCodec.go b/plc4go/spi/default/DefaultCodec.go
index ddf2819a03..30b70557b6 100644
--- a/plc4go/spi/default/DefaultCodec.go
+++ b/plc4go/spi/default/DefaultCodec.go
@@ -280,7 +280,7 @@ func (m *defaultCodec) Work(codec DefaultCodecRequirements) {
defer func(workerLog zerolog.Logger) {
if err := recover(); err != nil {
// TODO: If this is an error, cast it to an error and log it with "Err(err)"
- m.log.Error().Msgf("recovered from: %#v at %s", err, string(debug.Stack()))
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
if m.running {
workerLog.Warn().Msg("Keep running")
diff --git a/plc4go/spi/default/DefaultConnection.go b/plc4go/spi/default/DefaultConnection.go
index ebbde588cc..2d3a0f9fa5 100644
--- a/plc4go/spi/default/DefaultConnection.go
+++ b/plc4go/spi/default/DefaultConnection.go
@@ -23,6 +23,7 @@ import (
"context"
"github.com/apache/plc4x/plc4go/spi/tracer"
"github.com/rs/zerolog"
+ "runtime/debug"
"time"
"github.com/apache/plc4x/plc4go/pkg/api"
@@ -242,7 +243,7 @@ func (d *defaultConnection) ConnectWithContext(ctx context.Context) <-chan plc4g
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v", err))
+ ch <- NewDefaultPlcConnectionConnectResult(nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
err := d.GetMessageCodec().ConnectWithContext(ctx)
@@ -297,7 +298,7 @@ func (d *defaultConnection) Ping() <-chan plc4go.PlcConnectionPingResult {
go func() {
defer func() {
if err := recover(); err != nil {
- ch <- NewDefaultPlcConnectionPingResult(errors.Errorf("panic-ed %v", err))
+ ch <- NewDefaultPlcConnectionPingResult(errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
if d.GetConnection().IsConnected() {
diff --git a/plc4go/spi/model/DefaultPlcReadRequest.go b/plc4go/spi/model/DefaultPlcReadRequest.go
index 08ebc85e1e..96aa1d0eb4 100644
--- a/plc4go/spi/model/DefaultPlcReadRequest.go
+++ b/plc4go/spi/model/DefaultPlcReadRequest.go
@@ -21,6 +21,7 @@ package model
import (
"context"
+ "runtime/debug"
"time"
apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
@@ -140,7 +141,7 @@ func (d *DefaultPlcReadRequest) ExecuteWithContext(ctx context.Context) <-chan a
go func() {
defer func() {
if err := recover(); err != nil {
- resultChannel <- NewDefaultPlcReadRequestResult(d, nil, errors.Errorf("panic-ed %v", err))
+ resultChannel <- NewDefaultPlcReadRequestResult(d, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
var subResults []apiModel.PlcReadRequestResult
diff --git a/plc4go/spi/model/DefaultPlcWriteRequest.go b/plc4go/spi/model/DefaultPlcWriteRequest.go
index 35e114f300..54a3f979d7 100644
--- a/plc4go/spi/model/DefaultPlcWriteRequest.go
+++ b/plc4go/spi/model/DefaultPlcWriteRequest.go
@@ -21,6 +21,7 @@ package model
import (
"context"
+ "runtime/debug"
"time"
apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
@@ -162,7 +163,7 @@ func (d *DefaultPlcWriteRequest) ExecuteWithContext(ctx context.Context) <-chan
go func() {
defer func() {
if err := recover(); err != nil {
- resultChannel <- NewDefaultPlcWriteRequestResult(d, nil, errors.Errorf("panic-ed %v", err))
+ resultChannel <- NewDefaultPlcWriteRequestResult(d, nil, errors.Errorf("panic-ed %v. Stack: %s", err, debug.Stack()))
}
}()
var subResults []apiModel.PlcWriteRequestResult
diff --git a/plc4go/spi/pool/WorkerPool.go b/plc4go/spi/pool/WorkerPool.go
index bcf143bef8..85f3ef8064 100644
--- a/plc4go/spi/pool/WorkerPool.go
+++ b/plc4go/spi/pool/WorkerPool.go
@@ -63,8 +63,8 @@ func (w *worker) work() {
w.executor.getWorkerWaitGroup().Add(1)
defer w.executor.getWorkerWaitGroup().Done()
defer func() {
- if recovered := recover(); recovered != nil {
- w.log.Error().Msgf("Recovering from panic():%v. Stack: %s", recovered, debug.Stack())
+ if err := recover(); err != nil {
+ w.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
if !w.shutdown.Load() {
// if we are not in shutdown we continue
@@ -289,7 +289,7 @@ func (e *dynamicExecutor) Start() {
defer e.dynamicWorkers.Done()
defer func() {
if err := recover(); err != nil {
- e.log.Error().Msgf("panic-ed %v", err)
+ e.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
workerLog := e.log.With().Str("Worker type", "spawner").Logger()
@@ -339,7 +339,7 @@ func (e *dynamicExecutor) Start() {
defer e.dynamicWorkers.Done()
defer func() {
if err := recover(); err != nil {
- e.log.Error().Msgf("panic-ed %v", err)
+ e.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
workerLog := e.log.With().Str("Worker type", "killer").Logger()
diff --git a/plc4go/spi/transports/pcap/Transport.go b/plc4go/spi/transports/pcap/Transport.go
index 48f6eabe4e..486450e23b 100644
--- a/plc4go/spi/transports/pcap/Transport.go
+++ b/plc4go/spi/transports/pcap/Transport.go
@@ -33,6 +33,7 @@ import (
"github.com/rs/zerolog"
"io"
"net/url"
+ "runtime/debug"
"strconv"
"sync"
"time"
@@ -141,7 +142,7 @@ func (m *TransportInstance) Connect() error {
go func(m *TransportInstance, buffer *bytes.Buffer) {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Msgf("panic-ed %v", err)
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
packageCount := 0
diff --git a/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go
index 922ed57ca3..ac94e35625 100644
--- a/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go
+++ b/plc4go/spi/transports/utils/DefaultBufferedTransportInstance.go
@@ -22,6 +22,7 @@ package utils
import (
"bufio"
"context"
+ "runtime/debug"
"github.com/apache/plc4x/plc4go/spi/options"
@@ -61,7 +62,7 @@ func (m *defaultBufferedTransportInstance) ConnectWithContext(ctx context.Contex
go func() {
defer func() {
if err := recover(); err != nil {
- m.log.Error().Interface("err", err).Msg("connect panic-ed")
+ m.log.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
ch <- m.Connect()
diff --git a/plc4go/spi/utils/Net.go b/plc4go/spi/utils/Net.go
index cff8137a6f..b3e67e747d 100644
--- a/plc4go/spi/utils/Net.go
+++ b/plc4go/spi/utils/Net.go
@@ -24,6 +24,7 @@ import (
"context"
"github.com/rs/zerolog"
"net"
+ "runtime/debug"
"sync"
"time"
@@ -42,7 +43,7 @@ func GetIPAddresses(localLog zerolog.Logger, ctx context.Context, netInterface n
go func() {
defer func() {
if err := recover(); err != nil {
- localLog.Error().Msgf("panic-ed %v", err)
+ localLog.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
wg := &sync.WaitGroup{}
@@ -127,7 +128,7 @@ func lockupIpsUsingArp(localLog zerolog.Logger, ctx context.Context, netInterfac
go func(handle *pcap.Handle, iface net.Interface, stop chan struct{}) {
defer func() {
if err := recover(); err != nil {
- localLog.Error().Msgf("panic-ed %v", err)
+ localLog.Error().Msgf("panic-ed %v. Stack: %s", err, debug.Stack())
}
}()
src := gopacket.NewPacketSource(handle, layers.LayerTypeEthernet)