Chapter 18: Basic Authentication - Segmentation fault:11

I am following the book and adding user with password is ok. But if I want to build the project for testing the middleware i get this segmentation error. It seems this segmentation error comes from UsersController.swift
Here the code of the Controller:

import Vapor
import Crypto

struct UsersController:RouteCollection {
func boot(router: Router) throws {
let usersRoute = router.grouped(“api”,“users”)

    usersRoute.post(User.self, use: createHandler)
    usersRoute.get(use:getAllHandler)
    usersRoute.get(User.parameter, use: getHandler)
    usersRoute.delete(User.parameter, use:deleteHandler)
    usersRoute.get(User.parameter, "acronyms", use: getAcronymsHandler)
    
}
func createHandler(_ req: Request, user:User) throws -> Future<User.Public> {
    user.password = try BCrypt.hash(user.password)
    return user.save(on: req).convertToPublic()
}

func getAllHandler(_ req: Request) throws -> Future<[User.Public]>{
    return User.query(on: req).decode(data:User.Public.self).all()
}
func getHandler (_ req: Request) throws -> Future<User.Public> {
    return try req.parameters.next(User.self).convertToPublic()
}
func deleteHandler (_ req: Request) throws -> Future<HTTPStatus> {
    return try req
        .parameters
        .next(User.self)
        .delete(on: req)
        .transform(to: HTTPStatus.noContent)
}
func getAcronymsHandler(_ req: Request) throws -> Future <[Acronym]> {
    return try req
        .parameters.next (User.self)
        .flatMap(to: [Acronym].self){ user in
            try user.acronyms.query(on: req).all()
            
    }
}

}

@0xtim Can you please help with this when you get a chance? Thank you - much appreciated! :]

@arnold_74 can you post the error/segmentation fault you’re getting? The full build log would be great! (Does it happen on command line with swift build as well?

Here the error UsersController.swift. I removed all references to the class Public of User, but the segmentation error remains:

CompileSwift normal x86_64 /Users/schmida/vapor/TestApi/Sources/App/Controllers/UsersController.swift (in target: App)
cd /Users/schmida/vapor/TestApi
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c /Users/schmida/vapor/TestApi/Sources/App/Controllers/AcronymsController.swift /Users/schmida/vapor/TestApi/Sources/App/Controllers/CategoriesController.swift -primary-file /Users/schmida/vapor/TestApi/Sources/App/Controllers/UsersController.swift /Users/schmida/vapor/TestApi/Sources/App/Models/Acronym.swift /Users/schmida/vapor/TestApi/Sources/App/Models/AcronymCategoryPivot.swift /Users/schmida/vapor/TestApi/Sources/App/Models/Category.swift /Users/schmida/vapor/TestApi/Sources/App/Models/User.swift /Users/schmida/vapor/TestApi/Sources/App/app.swift /Users/schmida/vapor/TestApi/Sources/App/boot.swift /Users/schmida/vapor/TestApi/Sources/App/configure.swift /Users/schmida/vapor/TestApi/Sources/App/routes.swift -emit-module-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController~partial.swiftmodule -emit-module-doc-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController~partial.swiftdoc -serialize-diagnostics-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController.dia -emit-dependencies-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController.d -emit-reference-dependencies-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController.swiftdeps -target x86_64-apple-macosx10.10 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -I /usr/local/Cellar/libressl/2.8.3/include -I /usr/local/Cellar/libressl/2.8.3/include -I /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Products/Debug -F /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Products/Debug -F /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -enable-testing -g -module-cache-path /Users/schmida/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -swift-version 4 -enforce-exclusivity=checked -Onone -D SWIFT_PACKAGE -D DEBUG -D Xcode -serialize-debugging-options -Xcc -fmodule-map-file=/Users/schmida/vapor/TestApi/TestApi.xcodeproj/GeneratedModuleMap/CNIOOpenSSL/module.modulemap -Xcc -fmodule-map-file=/Users/schmida/vapor/TestApi/TestApi.xcodeproj/GeneratedModuleMap/CCryptoOpenSSL/module.modulemap -Xcc -fmodule-map-file=/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CBcrypt/include/module.modulemap -Xcc -fmodule-map-file=/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CBase32/include/module.modulemap -Xcc -I/Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/swift-overrides.hmap -Xcc -I/Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Products/Debug/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOZlib/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOHTTPParser/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio-ssl.git-8079033658190000870/Sources/CNIOOpenSSL/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CCryptoOpenSSL/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CBcrypt/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CBase32/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio-ssl-support.git--846674041114074845 -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOSHA1/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOAtomics/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIODarwin/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOLinux/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio-zlib-support.git-3708161568825700865 -Xcc -I/Users/schmida/vapor/TestApi/TestApi.xcodeproj/GeneratedModuleMap/CNIOOpenSSL -Xcc -I/Users/schmida/vapor/TestApi/TestApi.xcodeproj/GeneratedModuleMap/CCryptoOpenSSL -Xcc -I/Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/DerivedSources/x86_64 -Xcc -I/Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/Users/schmida/vapor/TestApi -module-name App -o /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController.o -index-store-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Index/DataStore -index-system-modules

0 swift 0x000000010be0359a PrintStackTraceSignalHandler(void*) + 42
1 swift 0x000000010be02d4e SignalHandler(int) + 302
2 libsystem_platform.dylib 0x00007fff7b560b3d _sigtramp + 29
3 swift 0x0000000108ae8de5 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 7765
4 swift 0x0000000108a6351a swift::Lowering::SILGenFunction::emitInitializationForVarDecl(swift::VarDecl*, bool) + 1194
5 swift 0x0000000108a65881 swift::Lowering::SILGenFunction::emitPatternBinding(swift::PatternBindingDecl*, unsigned int) + 81
6 swift 0x0000000108aa4e49 swift::Lowering::SILGenModule::emitGlobalInitialization(swift::PatternBindingDecl*, unsigned int) + 1977
7 swift 0x0000000108af35e1 (anonymous namespace)::SILGenType::emitType() + 513
8 swift 0x0000000108a0f1c9 swift::ASTVisitor<swift::Lowering::SILGenModule, void, void, void, void, void, void>::visit(swift::Decl*) + 73
9 swift 0x0000000108a0e1eb swift::Lowering::SILGenModule::emitSourceFile(swift::SourceFile*, unsigned int) + 939
10 swift 0x0000000108a0fda5 swift::SILModule::constructSIL(swift::ModuleDecl*, swift::SILOptions&, swift::FileUnit*, llvm::Optional, bool) + 1333
11 swift 0x000000010809036e performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 28990
12 swift 0x0000000108085d35 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 7717
13 swift 0x000000010802b965 main + 1349
14 libdyld.dylib 0x00007fff7b375ed9 start + 1
15 libdyld.dylib 0x000000000000007b start + 2227741091
Stack dump:
0. Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c /Users/schmida/vapor/TestApi/Sources/App/Controllers/AcronymsController.swift /Users/schmida/vapor/TestApi/Sources/App/Controllers/CategoriesController.swift -primary-file /Users/schmida/vapor/TestApi/Sources/App/Controllers/UsersController.swift -primary-file /Users/schmida/vapor/TestApi/Sources/App/Models/Acronym.swift /Users/schmida/vapor/TestApi/Sources/App/Models/AcronymCategoryPivot.swift /Users/schmida/vapor/TestApi/Sources/App/Models/Category.swift /Users/schmida/vapor/TestApi/Sources/App/Models/User.swift /Users/schmida/vapor/TestApi/Sources/App/app.swift /Users/schmida/vapor/TestApi/Sources/App/boot.swift /Users/schmida/vapor/TestApi/Sources/App/configure.swift /Users/schmida/vapor/TestApi/Sources/App/routes.swift -emit-module-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController~partial.swiftmodule -emit-module-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/Acronym~partial.swiftmodule -emit-module-doc-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController~partial.swiftdoc -emit-module-doc-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/Acronym~partial.swiftdoc -serialize-diagnostics-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController.dia -serialize-diagnostics-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/Acronym.dia -emit-dependencies-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController.d -emit-dependencies-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/Acronym.d -emit-reference-dependencies-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController.swiftdeps -emit-reference-dependencies-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/Acronym.swiftdeps -target x86_64-apple-macosx10.10 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -I /usr/local/Cellar/libressl/2.8.3/include -I /usr/local/Cellar/libressl/2.8.3/include -I /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Products/Debug -F /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Products/Debug -F /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -enable-testing -g -module-cache-path /Users/schmida/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -swift-version 4 -enforce-exclusivity=checked -Onone -D SWIFT_PACKAGE -D DEBUG -D Xcode -serialize-debugging-options -Xcc -fmodule-map-file=/Users/schmida/vapor/TestApi/TestApi.xcodeproj/GeneratedModuleMap/CNIOOpenSSL/module.modulemap -Xcc -fmodule-map-file=/Users/schmida/vapor/TestApi/TestApi.xcodeproj/GeneratedModuleMap/CCryptoOpenSSL/module.modulemap -Xcc -fmodule-map-file=/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CBcrypt/include/module.modulemap -Xcc -fmodule-map-file=/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CBase32/include/module.modulemap -Xcc -I/Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/swift-overrides.hmap -Xcc -I/Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Products/Debug/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOZlib/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOHTTPParser/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio-ssl.git-8079033658190000870/Sources/CNIOOpenSSL/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CCryptoOpenSSL/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CBcrypt/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/crypto.git-8383843511715517120/Sources/CBase32/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio-ssl-support.git–846674041114074845 -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOSHA1/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOAtomics/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIODarwin/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio.git-645985769485274432/Sources/CNIOLinux/include -Xcc -I/Users/schmida/vapor/TestApi/.build/checkouts/swift-nio-zlib-support.git-3708161568825700865 -Xcc -I/Users/schmida/vapor/TestApi/TestApi.xcodeproj/GeneratedModuleMap/CNIOOpenSSL -Xcc -I/Users/schmida/vapor/TestApi/TestApi.xcodeproj/GeneratedModuleMap/CCryptoOpenSSL -Xcc -I/Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/DerivedSources/x86_64 -Xcc -I/Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/Users/schmida/vapor/TestApi -module-name App -o /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/UsersController.o -o /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Build/Intermediates.noindex/TestApi.build/Debug/App.build/Objects-normal/x86_64/Acronym.o -index-store-path /Users/schmida/Library/Developer/Xcode/DerivedData/TestApi-dxfwfmsephrgxsgusymagrhowlsf/Index/DataStore -index-system-modules
error: Segmentation fault: 11

Well that’s bizarre! First, try a full clean - that means deleting .build, Derived data (most importantly) and the Xcode project and try again. If not, you may need to compiler expertise help!

Thank you Tim, deleting the derived data has resolved the problem. You are the best!!!

1 Like