Start a new topic

Wikitude Native IOS crash

Wikitude Native IOS crash


Hi Supasan,
Instruments in combination with the allocation instrument is your friend to find all allocated objects ;)

Otherwise a good understaning of your code.

 

Best regards

Andreas

Hi, Andreas Schacherbauer

I have same issue. how to verify that only one object of type WTWikitudeNativeSDK is alive in memory? or how to verify that the first object is properly deallocated before you create a new one?

Please let me some example.

Thanks

Hi Giuseppe,
The log indicates that you have two WTWikitudeNativeSDK objects in memory at the same time. Please verify that only one object of type WTWikitudeNativeSDK is alive in memory or verify that the first object is properly deallocated before you create a new one.

Best regards

Andreas

I copied the sample from the wikitude IOS Native sample relative to the client recognition.

My two view are inside NavigationController.

The first view has a button that push the Wikitude ViewController inside navigation controller

The first time is all good and all work fine.

If you back on the navigation controller and reenter again in the wikitude View Controller the app CRASHS this is the error:

2015-09-15 16:46:27.964 gulliver-scuola Client tracker loaded

F0915 16:46:35.657759 1012926940 utilities.cc:320> Check failed: !IsGoogleLoggingInitialized() You called InitGoogleLogging() twice!

*** Check failure stack trace: ***

    @   0x4ec7a1  google::LogMessage::Flush()

    @   0x4f07a5  google::LogMessageFatal::~LogMessageFatal()

    @   0x4ed181  google::ErrnoLogMessage::ErrnoLogMessage()

    @   0x4f5459  google::glog_internal_namespace_::InitGoogleLoggingUtilities()

    @   0x5be9f7  wikitude::common_library::impl::iOSConsoleWriter::iOSConsoleWriter()

    @   0x4357e1  -

    @   0x42cdbd  -

    @    0xa819d  -

    @ 0x2e3df55d  <redacted>

    @ 0x2e3df2cd  <redacted>

    @ 0x2e568619  <redacted>

    @ 0x2e48942b  <redacted>

    @ 0x2e489235  <redacted>

    @ 0x2e4891c9  <redacted>

    @ 0x2e3dc9cb  <redacted>

    @ 0x2ddf23e5  <redacted>

    @ 0x2ddedc35  <redacted>

    @ 0x2ddedabd  <redacted>

    @ 0x2dded45f  <redacted>

    @ 0x2dded24f  <redacted>

    @ 0x2e3de411  <redacted>

    @ 0x2ad4400f  <redacted>

    @ 0x2ad43423  <redacted>

    @ 0x2ad41aa1  <redacted>

    @ 0x2ac8d6d1  CFRunLoopRunSpecific

    @ 0x2ac8d4e3  CFRunLoopRunInMode

    @ 0x326381a9  GSEventRunModal

    @ 0x2e43f445  UIApplicationMain

    @    0xa9f41  main

    @ 0x39bc7aaf  <redacted>

(lldb)

--------------------------------------------------------------------------------

how can I unload the clientTracker on exit of the view?

--------------------------------------------------------------------------------

this is my code:

//

//  ViewController.m

//  stardemo

//

//  Created by Giuseppe Mosca on 15/09/15.

//  Copyright (c) 2015 acrmnet. All rights reserved.

//

 

#import "WikitudeViewController.h"

#import <WikitudeNativeSDK/WikitudeNativeSDK.h>

#import "ExternalRenderer.h"

#import "WikitudeLicense.h"

#import "StrokedRectangle.h"

#import "WikitudeLicense.h"

 

@interface WikitudeViewController () <WTWikitudeNativeSDKDelegate, WTClientTrackerDelegate> {

    IBOutlet ExternalEAGLView *eaglView;

}

 

 

@property (nonatomic, strong) WTWikitudeNativeSDK *wikitudeSDK;

@property (nonatomic, strong) WTClientTracker *clientTracker;

 

@property (nonatomic, strong) EAGLContext *sharedWikitudeEAGLCameraContext;

 

@property (nonatomic, copy) WTWikitudeUpdateHandler wikitudeUpdateHandler;

@property (nonatomic, copy) WTWikitudeDrawHandler wikitudeDrawHandler;

 

@property (nonatomic, assign) BOOL isTracking;

 

@property (nonatomic, strong) ExternalRenderer *renderer;

@property (nonatomic, strong) StrokedRectangle *renderableRectangle;

 

 

@end

 

@implementation WikitudeViewController

 

- (void)viewDidLoad

{

    ;

    

    self.renderer = ;

    self.renderableRectangle = ;

    self.renderableRectangle.scale = 320.0f;

 

    self.wikitudeSDK = ;

    ;

 

}

 

- (void)viewDidAppear:(BOOL)animated

{

    ;

    

    ;

    ;

    

    ;

}

 

- (void)viewDidDisappear:(BOOL)animated

{

    ;

    

    ;

    ;

 

}

 

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

{

    ;

    

    ;

}

 

- (void)didReceiveMemoryWarning {

    ;

    // Dispose of any resources that can be recreated.

}

 

 

#pragma mark - ExternalRenderer render loop

- (ExternalRenderBlock)renderBlock

{

    return ^ (CADisplayLink *displayLink) {

        if ( self.wikitudeUpdateHandler

            &&

            self.wikitudeDrawHandler )

        {

            self.wikitudeUpdateHandler();

            self.wikitudeDrawHandler();

        }

        

        ;

        

        if ( _isTracking )

        {

            ;

        }

    };

}

 

#pragma mark - Delegation

#pragma mark WTWikitudeNativeSDKDelegte

- (void)wikitudeNativeSDK:(WTWikitudeNativeSDK * __nonnull)wikitudeNativeSDK didCreatedExternalUpdateHandler:(WTWikitudeUpdateHandler __nonnull)updateHandler

{

    self.wikitudeUpdateHandler = updateHandler;

}

 

- (void)wikitudeNativeSDK:(WTWikitudeNativeSDK * __nonnull)wikitudeNativeSDK didCreatedExternalDrawHandler:(WTWikitudeDrawHandler __nonnull)drawHandler

{

    self.wikitudeDrawHandler = drawHandler;

}

 

- (EAGLContext *)eaglContextForVideoCameraInWikitudeNativeSDK:(WTWikitudeNativeSDK * __nonnull)wikitudeNativeSDK

{

    if (!_sharedWikitudeEAGLCameraContext )

    {

        EAGLContext *rendererContext = ;

        self.sharedWikitudeEAGLCameraContext = ;

    }

    return self.sharedWikitudeEAGLCameraContext;

}

 

- (CGRect)eaglViewSizeForExternalRenderingInWikitudeNativeSDK:(WTWikitudeNativeSDK * __nonnull)wikitudeNativeSDK

{

    return eaglView.bounds;

}

 

- (void)wikitudeNativeSDK:(WTWikitudeNativeSDK * __nonnull)wikitudeNativeSDK didEncounterInternalError:(NSError * __nonnull)error

{

    NSLog(@"Internal Wikitude SDK error encounterd. %@", );

}

 

#pragma mark WTClientTrackerDelegate

 

- (void)baseTracker:(nonnull WTBaseTracker *)baseTracker didRecognizedTarget:(nonnull WTImageTarget *)recognizedTarget

{

    NSLog(@"recognized target '%@'", );

    _isTracking = YES;

}

 

- (void)baseTrakcer:(nonnull WTBaseTracker *)baseTracker didTrackTarget:(nonnull WTImageTarget *)trackedTarget

{

    ;

    ;

}

 

- (void)baseTracker:(nonnull WTBaseTracker *)baseTracker didLostTarget:(nonnull WTImageTarget *)lostTarget

{

    NSLog(@"lost target '%@'", );

    _isTracking = NO;

}

 

 

- (void)clientTracker:(nonnull WTClientTracker *)clientTracker didFinishedLoadingTargetCollectionFromURL:(nonnull NSURL *)URL

{

    NSLog(@"Client tracker loaded");

}

 

- (void)clientTracker:(nonnull WTClientTracker *)clientTracker didFailToLoadTargetCollectionFromURL:(nonnull NSURL *)URL withError:(nonnull NSError *)error

{

    NSLog(@"Unable to load client tracker. Reason: %@", );

}

 

-(void)baseTracker:(nonnull WTBaseTracker *)baseTracker didTrackTarget:(nonnull WTImageTarget *)trackedTarget {

    

}

 

@end

 
Login or Signup to post a comment