Skip to content

Commit 468ddba

Browse files
committed
Enable the address sanitizer in our CI to catch memory corruption immediately (#1014)
* android * add a new build job with asan enabled * xcconfigs & test crash page * lock merge * don't enable ASAN from yml * fix flow * yarn lint * run static analysis on release unit/integration * fix merge conflicts with master * yarn lint and pathing fix * static analyzer & sanitizer building * ios enablesanitizer * disable thread sanitizer * remove clang static analyzer sim filter * add back arm64 excluded arch * add back arm64 exclusion * ios sanitizer scheme * enable asan from ios schemes * podfile.lock conflicts
1 parent 1465f4f commit 468ddba

23 files changed

+432
-54
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* Copyright (c) Facebook, Inc. and its affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*
7+
* @format
8+
* @flow
9+
*/
10+
11+
'use strict';
12+
import type {HostComponent} from '../Renderer/shims/ReactNativeTypes';
13+
import type {ViewProps} from '../Components/View/ViewPropTypes';
14+
15+
const {requireNativeComponent} = require('react-native');
16+
17+
type NativeProps = $ReadOnly<{|
18+
...ViewProps,
19+
|}>;
20+
21+
const RCTAddressSanitizerCrash: HostComponent<NativeProps> = requireNativeComponent<NativeProps>(
22+
'RCTAddressSanitizerCrash',
23+
);
24+
25+
module.exports = RCTAddressSanitizerCrash;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
*
3+
* This source code is licensed under the MIT license found in the
4+
* LICENSE file in the root directory of this source tree.
5+
*/
6+
7+
#import <React/RCTUIKit.h>
8+
#import <React/RCTBridge.h>
9+
10+
@interface RCTAddressSanitizerCrashManager : NSObject <RCTBridgeModule>
11+
12+
@end
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//
2+
// RCTAddressSanitizerCrashManager.mm
3+
// Pods
4+
//
5+
6+
#import "RCTAddressSanitizerCrashManager.h"
7+
8+
@implementation RCTAddressSanitizerCrashManager
9+
10+
RCT_EXPORT_MODULE(ASANCrash)
11+
12+
RCT_EXPORT_METHOD(invokeMemoryCrash) {
13+
char *s = (char*)malloc(100);
14+
free(s);
15+
strcpy(s, "Hello world!"); // AddressSanitizer: heap-use-after-free
16+
}
17+
18+
@end

packages/rn-tester/Podfile.lock

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -506,47 +506,50 @@ EXTERNAL SOURCES:
506506
SPEC CHECKSUMS:
507507
boost-for-react-native: d5ad1140010aa8cb622323a781ecbeab4425d19a
508508
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
509-
DoubleConversion: 0ea4559a49682230337df966e735d6cc7760108e
510-
FBLazyVector: 5a2f9592b6a73a6058558956d167bb1ad684c7c2
511-
FBReactNativeSpec: 21b068aad009ce37947cf3ca75d38a97910dbb5a
512-
Flipper: d3da1aa199aad94455ae725e9f3aa43f3ec17021
513-
Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
514-
Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c
509+
DoubleConversion: ed15e075aa758ac0e4c1f8b830bd4e4d40d669e8
510+
FBLazyVector: 11bc87f472827a73ff114494b2e80e0b805a32d7
511+
FBReactNativeSpec: f58c30a99b669cb145e7a8c0c0c721de83951240
512+
Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733
513+
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
514+
Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c
515+
Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
516+
Flipper-Folly: 83af37379faa69497529e414bd43fbfc7cae259a
515517
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
516518
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
517519
Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154
518520
FlipperKit: 8a20b5c5fcf9436cac58551dc049867247f64b00
519521
glog: 0dc7efada961c0793012970b60faebbd58b0decb
520522
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
521523
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
522-
RCT-Folly: b3998425a8ee9f695f57a204dc494534246f0fe9
523-
RCTRequired: 476b7e9b6fe8f6795b3c2a32613eda0f2bf70659
524-
RCTTypeSafety: 8a74abf2ade4e1e464831b6d63f80b89107fc069
525-
React: fbab5f0bbf2f3fdc47b20d6f8fb1f9dda7814053
526-
React-callinvoker: 5da8f570452f13cf7e5faf216092f5da82da3d11
527-
React-Core: 7d84e349d0ca6e14693175ac5aeb72371433d977
528-
React-CoreModules: 64e9eaf3e56585233b99ddcdab4eeda0f3947b33
529-
React-cxxreact: 4318977ebf4b4bdf9d1db19deb079121659925dd
530-
React-jsi: d57227c937e7658c0d565370790124c23c793f35
531-
React-jsiexecutor: c3d1155f35163d8c077b6767dad18a41913e3dcd
532-
React-jsinspector: 6593643f36af11dab5f53396df73cb2284fd5c9a
533-
React-perflogger: fdfe29e7772de8ffb6f2839f10380c985bca4687
534-
React-RCTActionSheet: 53bce013367652e49dbb128a4236f76973264710
535-
React-RCTAnimation: f431c95d12262f7690137d8d5071b12eede8af62
536-
React-RCTBlob: 88a533c439c2f02d45d8fdbba14d3cf54737e778
537-
React-RCTImage: a6305a92c166c5f8be14c2624918eb84b8c93651
538-
React-RCTLinking: ab6174291d7568071f8511a4d4d78eedf16b976e
539-
React-RCTNetwork: 74d93063da8eca72f153e82a65308c7b3efc37f3
540-
React-RCTPushNotification: 69848dd6ac04a6fc876030f9ecb40fa88fdc1cec
541-
React-RCTSettings: 66c9324eb471c4b718784c39e0aaff90164ddcbf
542-
React-RCTTest: 8486f64ea7150ac6bf48794824fa9373527b0356
543-
React-RCTText: 7f9a1d29e7fe6279e9bc9eec6d447a0d45f392de
544-
React-RCTVibration: 027f7cf1e570a3e851dfceda2dbbd635af623ca0
545-
React-runtimeexecutor: 80e779465c0d81aa5bd7b571ea2981cf7e86cf34
546-
React-TurboModuleCxx-RNW: 1804ad49cbaff86a2e4ee712711e521f1ae2cdd3
547-
React-TurboModuleCxx-WinRTPort: 0bda8ea2b91c4950286d01ac6036d8d52b294624
548-
ReactCommon: 9dd2d2d804057ebba91603459b31c6f03a25c51c
549-
Yoga: d40948211a16713378654fe5d445c25048030bda
524+
RCT-Folly: 5c589d0de10e841479ad79352fae591dc0e9533a
525+
RCTRequired: 2eb1355625e25d08081cfe239db7d3874d77d208
526+
RCTTypeSafety: 9f298b5aa98b080b67792676b6243f1ca032520c
527+
React: 3cd3b5138e36d870bfefaf4a9f0e8d4d658cf499
528+
React-callinvoker: bfbb455c76da9a24732560d956a4458057bb1021
529+
React-Core: 160b28e71f337fa24c27937cecbeebce7af1693f
530+
React-CoreModules: 38f6c3f85421cbbe43f26fb7eec281269f502fe1
531+
React-cxxreact: c72a2ce5d5fa068fe72130d2530caeb8cf6e6790
532+
React-jsi: c6a502974929a68d0c706dec909de949d3a184cf
533+
React-jsiexecutor: 6194311bab350a51c265c42424ce3377b58e776b
534+
React-jsinspector: 98a8edfdf1a77275d1e1ad8832ed2ca6ebe4ea61
535+
React-logger: 745a29a1f97e1725bab7888b8d501dda06b7f485
536+
React-perflogger: 3dcb37ac059350488c74211912731f88d4207b9a
537+
React-RCTActionSheet: aca58af0c729d4d70e2e25565fbd6f6322b18764
538+
React-RCTAnimation: 18e68a8ba438155cefe4b3fb91450492036aca48
539+
React-RCTBlob: ee8067d9c6af4557a9bde315e91bac756498e91c
540+
React-RCTImage: a4167a4967505eaa04a82f5b9573065c30ecf69e
541+
React-RCTLinking: d9034395129c1e4d9c7e60c9deb5b987daf79554
542+
React-RCTNetwork: 80bfb1e3f3498c067293e709a78ad07355a5b05c
543+
React-RCTPushNotification: 899e34163eb7e632fa5164f2c1a2b8e7fb02e7a3
544+
React-RCTSettings: 8049c8ffdd76393479d731ab350d6fd0550a7549
545+
React-RCTTest: c2d9a4516b734322e8df43d192cc3db97d58b092
546+
React-RCTText: 9f435bd5c5f631bf791bf60e501780192ec376af
547+
React-RCTVibration: ed1e5e188b6ed93739d39bc23a20aa87d7eb47f0
548+
React-runtimeexecutor: c433f9ba42e6bcc0bd5e42d2710538f3591edc02
549+
React-TurboModuleCxx-RNW: f2e32cbfced49190a61d66c993a8975de79a158a
550+
React-TurboModuleCxx-WinRTPort: 523c514e00e9136f0d048fdce302e976e24357f1
551+
ReactCommon: 57264a0de7cd051c3495c78775056e8582988388
552+
Yoga: a4c667843470ecfe7ed3a1bc546889f4730534c7
550553
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
551554

552555
PODFILE CHECKSUM: fc89892d7bd92e5bb34cedc778a0e7fff4c0da86

0 commit comments

Comments
 (0)