Quick test, buscá libsqlite3.so.0 en tu sistema, si aparece creá un symlink en el directorio de la VM de VW a la ubicación donde apareció la .so. Luego probá nuevamente.
Pero esta claro que el mensaje es que no esta encontrando la .so, quizas el LD_PATH no incluye al directorio donde se encuentra, o la library no esta instalada en el sistema. Saludos! Esteban A. Maringolo 2017-09-14 20:48 GMT-03:00 Andres Valloud <[email protected]>: > Disculpa. A lo que iba es que la primitiva que busca la library termina > llamando dlopen(). Si eso falla, entonces la primitiva tambien. Por eso > te decia que te fijes que hace dlopen() en tu environment... donde se > buscan los .so, en que orden se miran los diversos directorios, etc. Si > termina estando claro que dlopen() va a fallar, entonces eso es un hint > fuerte de por que la primitiva falla. Para determinar que se supone que > hace dlopen() se puede mirar la man page de dlopen(), y tambien recomiendo > mirar que dice POSIX acerca de la conducta de dlopen(). Si aun no esta > claro, siempre se puede escribir un programita de 5 lineas en C que trate > de cargar ese .so dinamicamente y ver que pasa. > > Mas o menos pasa lo mismo en Windows, donde lo que hay que mirar es la > conducta de LoadLibrary() en MSDN. Lamentablemente, en Windows la conducta > de como se buscan los DLLs es muy complicada. > > Andres. > > > On Thu, Sep 14, 2017 at 2:09 PM, Smalltalk <[email protected]> > wrote: > >> Andres, >> >> Gracias por la respuesta, pero no si te entendi correctamente. >> Estoy trabajando sobre Linux. >> Y la falla se da en: >> ExternalLibrary>>primLoadLibrary: >> Lo que esta fallando es una primitiva de VW: >> primLoadLibrary: libraryName >> "Answer a handle returned by the platform-specific library loading >> services. If the library could not be loaded an ExternalLibrary >> libraryNotLoadedSignal is raised with a SystemError as the exception's >> parameter. The SystemError contains further information about the cause of >> the failure." >> >> <primitive: 330 errorCode: errorCode> >> ^self class libraryNotLoadedSignal raiseWith: errorCode >> >> Copio el stack: >> >> Unhandled exception: nil >> ExternalLibrary>>primLoadLibrary: >> ExternalLibrary>>load >> ExternalLibraryHolder>>load >> ExternalLibraryHolder>>mapAddressForName: >> ExternalMethod class>>mapAddressFor:library: >> optimized [] in [] in ExternalMethod class>>mapAddressFor: >> BlockClosure>>on:do: >> optimized [] in ExternalMethod class>>mapAddressFor: >> [] in LinkedOrderedCollection>>detect:ifNone: >> LinkedOrderedCollection(OrderedCollection)>>do: >> LinkedOrderedCollection>>ownDo: >> LinkedOrderedCollection>>performDo:block:path: >> optimized [] in LinkedOrderedCollection>>performDo:block:path: >> OrderedCollection>>do: >> LinkedOrderedCollection>>performDo:block:path: >> LinkedOrderedCollection>>do: >> LinkedOrderedCollection>>detect:ifNone: >> ExternalMethod class>>mapAddressFor: >> ExternalMethod class>>virtualHandleForClass:external: >> ExternalMethod>>unlinkedCall:arguments: >> SQLite3Connection>>serverAttachEnvironmentExternal: >> optimized [] in SQLite3Connection>>acquireExternal: >> BlockClosure>>ifCurtailed: >> SQLite3Connection>>acquireExternal: >> SQLite3Connection(ExternalDatabaseConnection)>>acquire: >> SQLite3Connection(ExternalDatabaseConnection)>>connect: >> SQLite3Connection(ExternalDatabaseConnection)>>connect >> HopEXDIInterface>>connectOnDSN: >> HopEXDISQLiteConnection(HOPConnection)>>connectOnDSN: >> HopEXDISQLiteConnection class(HOPConnection class)>>connectOnDSN:withName: >> HOPEXDISQLiteDataSource>>getConnectionWithName: >> DbConnectionManager(HOPConnectionManager)>>buildConnection: >> onDSN:readOnly: >> DbConnectionManager(HOPConnectionManager)>>openTemporaryConnection >> DbConnectionManager(HOPConnectionManager)>>openTemporaryConn >> ectionIfNeeded >> TemporaryTableManager>>deleteAndRecreateTemporaryTables: >> TemporaryTableManager>>createTemporaryTablesForBprenor >> Bprenot1HorizontalForm>>onNonStdOne >> RturMaster>>onNonStdOne >> optimized [] in ApplicationModel>>actionFor: >> optimized [] in ActionButtonSpec>>typeConvert: >> PluggableAdaptor>>setValue: >> PluggableAdaptor(ValueModel)>>value: >> WinXPTriggerButtonController(TriggerButtonController)>>pressAction >> TriggerButtonTracker(BasicButtonTracker)>>finishSelectionFor: >> TriggerButtonTracker>>finishSelectionFor: >> TriggerButtonTracker(SelectionTracker)>>redButtonReleasedEvent: >> RedButtonReleasedEvent>>dispatchTo: >> TriggerButtonTracker(SelectionTracker)>>handleEvent: >> EventDispatcher>>dispatch:to: >> EventDispatcher>>dispatchEvent: >> RedButtonReleasedEvent(Event)>>dispatch >> RedButtonReleasedEvent(Event)>>dispatchForWindowManager: >> optimized [] in WindowManager>>safelyDispatchForWindowManager: >> BlockClosure>>on:do: >> WindowManager>>safelyDispatchForWindowManager: >> WindowManager>>processNextEvent >> optimized [] in [] in WindowManager>>newProcess >> BlockClosure>>on:do: >> optimized [] in WindowManager>>newProcess >> BlockClosure>>on:do: >> optimized [] in Process class>>forBlock:priority: >> >> ---------------------------------------------------------------------- >> ExternalLibrary>>primLoadLibrary: >> Receiver: >> an ExternalLibrary >> Instance Variables: >> handle = nil >> name = #'libsqlite3.so.0' >> owners = a WeakArray[1] >> Arguments: >> libraryName = a ByteArray[15] >> Temporaries: >> errorCode = a SystemError(#'generic error','libsqlite3.so.0: cannot >> open shared object file: No such file or directory') >> Context PC = 13 >> >> ---------------------------------------------------------------------- >> ExternalLibrary>>load >> Receiver: >> an ExternalLibrary >> Instance Variables: >> handle = nil >> name = #'libsqlite3.so.0' >> owners = a WeakArray[1] >> Temporaries: >> nameOrNil = a ByteArray[15] >> Context PC = 17 >> >> ---------------------------------------------------------------------- >> ExternalLibraryHolder>>load >> Receiver: >> an ExternalLibraryHolder >> Instance Variables: >> name = '[linux]libsqlite3.so.0' >> directories = a LinkedOrderedCollection[11] >> library = an ExternalLibrary >> owner = SQLite3Interface >> Temporaries: >> fullName = 'libsqlite3.so.0' >> Context PC = 42 >> >> ---------------------------------------------------------------------- >> ExternalLibraryHolder>>mapAddressForName: >> Receiver: >> an ExternalLibraryHolder >> Instance Variables: >> name = '[linux]libsqlite3.so.0' >> directories = a LinkedOrderedCollection[11] >> library = an ExternalLibrary >> owner = SQLite3Interface >> Arguments: >> nameID = #sqlite3_open >> Context PC = 9 >> >> ---------------------------------------------------------------------- >> ExternalMethod class>>mapAddressFor:library: >> Receiver: >> an ExternalMethod class >> Instance Variables: >> superclass = CompiledMethod >> methodDict = a MethodDictionary[37] >> format = 20493 >> subclasses = nil >> instanceVariables = an Array[10] >> organization = ('initialize-release' #for: #releaseHandle >> #updateLayoutCache) >> ('address mapping' #mapAddress #mapAddressFor: #unlinkedCall:arguments:) >> ('accessing' #argumentKinds #datumClass #external #handle #libraries >> #methodSelector #name #ordinal #ordinal: #owner #referentAddress >> #resultType #specifierFlags #structArgSize #structReturnSize #virtuals) >> ('testing' #isLinkedFor: #isVirtual) >> ('copying' #postCopy #withAdditionalProperties:) >> ('comparing' #=) >> ('tracing' #traceWalkFrom:) >> ('binary storage' #isCodeReaderEquivalentTo: #postLoad >> #postReadGeneralStructureOn: #storeGeneralStructureOn:) >> ('private' #computeStructReturnSize #copyStateFromOldVersion: >> #findVirtualHandleForClass: #referentAddress: #virtuals:) >> >> name = #ExternalMethod >> classPool = a NameSpaceOfClass[0] >> environment = a NameSpace[48] >> Arguments: >> anExternal = ExternalMethod SQLite3NoneThreadedInterface>> >> sqlite3_open:with: >> aLibrary = an ExternalLibraryHolder >> Temporaries: >> aHandle = nil >> Context PC = 27 >> >> ---------------------------------------------------------------------- >> optimized [] in [] in ExternalMethod class>>mapAddressFor: >> Receiver: >> an UndefinedObject >> Temporaries: >> .super = ExternalMethod >> .anExternal = ExternalMethod SQLite3NoneThreadedInterface>> >> sqlite3_open:with: >> .aLibrary = an ExternalLibraryHolder >> Context PC = 8 >> >> ---------------------------------------------------------------------- >> BlockClosure>>on:do: >> Receiver: >> a BlockClosure >> Instance Variables: >> method = CompiledBlock [] in [] in ExternalMethod >> class>>mapAddressFor: >> outerContext = nil >> copiedValues = an Array[3] >> Arguments: >> anExceptionSelector = LibraryNotFoundError >> handlerBlock = BlockClosure [] in [] in ExternalMethod >> class>>mapAddressFor: >> Context PC = 18 >> >> ---------------------------------------------------------------------- >> optimized [] in ExternalMethod class>>mapAddressFor: >> Receiver: >> an UndefinedObject >> Arguments: >> aLibrary = an ExternalLibraryHolder >> Temporaries: >> .anExternal = ExternalMethod SQLite3NoneThreadedInterface>> >> sqlite3_open:with: >> .super = ExternalMethod >> Context PC = 16 >> >> ---------------------------------------------------------------------- >> [] in LinkedOrderedCollection>>detect:ifNone: >> Receiver: >> a LinkedOrderedCollection >> Instance Variables: >> firstIndex = 1 >> lastIndex = 0 >> backup = an OrderedCollection[1] >> Arguments: >> each = an ExternalLibraryHolder >> Temporaries: >> .aBlock = BlockClosure [] in ExternalMethod class>>mapAddressFor: >> Context PC = 6 >> >> ---------------------------------------------------------------------- >> LinkedOrderedCollection(OrderedCollection)>>do: >> Receiver: >> a LinkedOrderedCollection >> Instance Variables: >> firstIndex = 1 >> lastIndex = 4 >> backup = an OrderedCollection[0] >> Arguments: >> aBlock = BlockClosure [] in LinkedOrderedCollection>>detect:ifNone: >> Temporaries: >> index = 3 >> Context PC = 17 >> >> ---------------------------------------------------------------------- >> LinkedOrderedCollection>>ownDo: >> Receiver: >> a LinkedOrderedCollection >> Instance Variables: >> firstIndex = 1 >> lastIndex = 4 >> backup = an OrderedCollection[0] >> Arguments: >> aBlock = BlockClosure [] in LinkedOrderedCollection>>detect:ifNone: >> Context PC = 6 >> >> ---------------------------------------------------------------------- >> LinkedOrderedCollection>>performDo:block:path: >> Receiver: >> a LinkedOrderedCollection >> Instance Variables: >> firstIndex = 1 >> lastIndex = 4 >> backup = an OrderedCollection[0] >> Arguments: >> doSelector = #ownDo: >> aBlock = BlockClosure [] in LinkedOrderedCollection>>detect:ifNone: >> aPath = an IdentitySet[2] >> Context PC = 15 >> >> ---------------------------------------------------------------------- >> optimized [] in LinkedOrderedCollection>>performDo:block:path: >> Receiver: >> an UndefinedObject >> Arguments: >> d = a LinkedOrderedCollection[4] >> Temporaries: >> .doSelector = #ownDo: >> .aBlock = BlockClosure [] in LinkedOrderedCollection>>detect:ifNone: >> .aPath = an IdentitySet[2] >> Context PC = 9 >> >> ---------------------------------------------------------------------- >> OrderedCollection>>do: >> Receiver: >> an OrderedCollection >> Instance Variables: >> firstIndex = 1 >> lastIndex = 1 >> Arguments: >> aBlock = BlockClosure [] in LinkedOrderedCollection>>perfo >> rmDo:block:path: >> Temporaries: >> index = 1 >> Context PC = 17 >> >> ---------------------------------------------------------------------- >> LinkedOrderedCollection>>performDo:block:path: >> Receiver: >> a LinkedOrderedCollection >> Instance Variables: >> firstIndex = 1 >> lastIndex = 0 >> backup = an OrderedCollection[1] >> Arguments: >> doSelector = #ownDo: >> aBlock = BlockClosure [] in LinkedOrderedCollection>>detect:ifNone: >> aPath = an IdentitySet[2] >> Context PC = 25 >> >> ---------------------------------------------------------------------- >> LinkedOrderedCollection>>do: >> Receiver: >> a LinkedOrderedCollection >> Instance Variables: >> firstIndex = 1 >> lastIndex = 0 >> backup = an OrderedCollection[1] >> Arguments: >> aBlock = BlockClosure [] in LinkedOrderedCollection>>detect:ifNone: >> Context PC = 8 >> >> ---------------------------------------------------------------------- >> LinkedOrderedCollection>>detect:ifNone: >> Receiver: >> a LinkedOrderedCollection >> Instance Variables: >> firstIndex = 1 >> lastIndex = 0 >> backup = an OrderedCollection[1] >> Arguments: >> aBlock = BlockClosure [] in ExternalMethod class>>mapAddressFor: >> exceptionBlock = BlockClosure [] in ExternalMethod >> class>>mapAddressFor: >> Context PC = 8 >> >> ---------------------------------------------------------------------- >> ExternalMethod class>>mapAddressFor: >> Receiver: >> an ExternalMethod class >> Instance Variables: >> superclass = CompiledMethod >> methodDict = a MethodDictionary[37] >> format = 20493 >> subclasses = nil >> instanceVariables = an Array[10] >> organization = ('initialize-release' #for: #releaseHandle >> #updateLayoutCache) >> ('address mapping' #mapAddress #mapAddressFor: #unlinkedCall:arguments:) >> ('accessing' #argumentKinds #datumClass #external #handle #libraries >> #methodSelector #name #ordinal #ordinal: #owner #referentAddress >> #resultType #specifierFlags #structArgSize #structReturnSize #virtuals) >> ('testing' #isLinkedFor: #isVirtual) >> ('copying' #postCopy #withAdditionalProperties:) >> ('comparing' #=) >> ('tracing' #traceWalkFrom:) >> ('binary storage' #isCodeReaderEquivalentTo: #postLoad >> #postReadGeneralStructureOn: #storeGeneralStructureOn:) >> ('private' #computeStructReturnSize #copyStateFromOldVersion: >> #findVirtualHandleForClass: #referentAddress: #virtuals:) >> >> name = #ExternalMethod >> classPool = a NameSpaceOfClass[0] >> environment = a NameSpace[48] >> Arguments: >> anExternal = ExternalMethod SQLite3NoneThreadedInterface>> >> sqlite3_open:with: >> Context PC = 22 >> >> ---------------------------------------------------------------------- >> ExternalMethod class>>virtualHandleForClass:external: >> Receiver: >> an ExternalMethod class >> Instance Variables: >> superclass = CompiledMethod >> methodDict = a MethodDictionary[37] >> format = 20493 >> subclasses = nil >> instanceVariables = an Array[10] >> organization = ('initialize-release' #for: #releaseHandle >> #updateLayoutCache) >> ('address mapping' #mapAddress #mapAddressFor: #unlinkedCall:arguments:) >> ('accessing' #argumentKinds #datumClass #external #handle #libraries >> #methodSelector #name #ordinal #ordinal: #owner #referentAddress >> #resultType #specifierFlags #structArgSize #structReturnSize #virtuals) >> ('testing' #isLinkedFor: #isVirtual) >> ('copying' #postCopy #withAdditionalProperties:) >> ('comparing' #=) >> ('tracing' #traceWalkFrom:) >> ('binary storage' #isCodeReaderEquivalentTo: #postLoad >> #postReadGeneralStructureOn: #storeGeneralStructureOn:) >> ('private' #computeStructReturnSize #copyStateFromOldVersion: >> #findVirtualHandleForClass: #referentAddress: #virtuals:) >> >> name = #ExternalMethod >> classPool = a NameSpaceOfClass[0] >> environment = a NameSpace[48] >> Arguments: >> theClass = SQLite3NoneThreadedInterface >> anExternal = ExternalMethod SQLite3NoneThreadedInterface>> >> sqlite3_open:with: >> Temporaries: >> aHandle = nil >> actualClass = SQLite3NoneThreadedInterface >> errorClass = SQLite3NoneThreadedInterface >> Context PC = 27 >> >> ---------------------------------------------------------------------- >> ExternalMethod>>unlinkedCall:arguments: >> Receiver: >> an ExternalMethod >> Instance Variables: >> bytes = a ByteArray[11] >> mclass = SQLite3NoneThreadedInterface >> sourceCode = 330392342 >> handle = nil >> specifierFlags = 18 >> argumentKinds = a ByteArray[3] >> structArgSize = 0 >> structReturnSize = 0 >> datumClass = CDatum >> resultType = int >> virtuals = nil >> methodSelector = #sqlite3_open:with: >> external = #sqlite3_open >> Arguments: >> receiver = a SQLite3NoneThreadedInterface >> arguments = an Array[2] >> Context PC = 8 >> >> ---------------------------------------------------------------------- >> SQLite3Connection>>serverAttachEnvironmentExternal: >> Receiver: >> a SQLite3Connection >> Instance Variables: >> stateHolder = a ValueHolder on: #new >> traceStream = nil >> traceLevel = 0 >> participants = a WeakArray[0] >> participantsSemaphore = a RecursionLock >> transaction = a SQLite3Transaction >> username = 'prova' >> password = 'prova' >> environment = ':memory:' >> transactionCoordinator = a ValueHolder on: false >> cachedSession = nil >> isolationLevel = nil >> sqliteHolder = a ValueHolder on: a CPointer {0F779080} (struct >> __sqlite3 * * ) >> Arguments: >> t1 = ':memory:' >> Context PC = 11 >> >> ---------------------------------------------------------------------- >> optimized [] in SQLite3Connection>>acquireExternal: >> Receiver: >> an UndefinedObject >> Temporaries: >> .super = a SQLite3Connection >> .t2 = ':memory:' >> Context PC = 10 >> >> ---------------------------------------------------------------------- >> BlockClosure>>ifCurtailed: >> Receiver: >> a BlockClosure >> Instance Variables: >> method = CompiledBlock [] in SQLite3Connection>>acquireExternal: >> outerContext = nil >> copiedValues = an Array[2] >> Arguments: >> terminationBlock = BlockClosure [] in SQLite3Connection>>acquireExte >> rnal: >> Context PC = 4 >> >> ---------------------------------------------------------------------- >> SQLite3Connection>>acquireExternal: >> Receiver: >> a SQLite3Connection >> Instance Variables: >> stateHolder = a ValueHolder on: #new >> traceStream = nil >> traceLevel = 0 >> participants = a WeakArray[0] >> participantsSemaphore = a RecursionLock >> transaction = a SQLite3Transaction >> username = 'prova' >> password = 'prova' >> environment = ':memory:' >> transactionCoordinator = a ValueHolder on: false >> cachedSession = nil >> isolationLevel = nil >> sqliteHolder = a ValueHolder on: a CPointer {0F779080} (struct >> __sqlite3 * * ) >> Arguments: >> t1 = 'prova' >> Temporaries: >> t2 = ':memory:' >> Context PC = 44 >> >> ---------------------------------------------------------------------- >> SQLite3Connection(ExternalDatabaseConnection)>>acquire: >> Receiver: >> a SQLite3Connection >> Instance Variables: >> stateHolder = a ValueHolder on: #new >> traceStream = nil >> traceLevel = 0 >> participants = a WeakArray[0] >> participantsSemaphore = a RecursionLock >> transaction = a SQLite3Transaction >> username = 'prova' >> password = 'prova' >> environment = ':memory:' >> transactionCoordinator = a ValueHolder on: false >> cachedSession = nil >> isolationLevel = nil >> sqliteHolder = a ValueHolder on: a CPointer {0F779080} (struct >> __sqlite3 * * ) >> Arguments: >> t1 = 'prova' >> Context PC = 5 >> >> ---------------------------------------------------------------------- >> SQLite3Connection(ExternalDatabaseConnection)>>connect: >> Receiver: >> a SQLite3Connection >> Instance Variables: >> stateHolder = a ValueHolder on: #new >> traceStream = nil >> traceLevel = 0 >> participants = a WeakArray[0] >> participantsSemaphore = a RecursionLock >> transaction = a SQLite3Transaction >> username = 'prova' >> password = 'prova' >> environment = ':memory:' >> transactionCoordinator = a ValueHolder on: false >> cachedSession = nil >> isolationLevel = nil >> sqliteHolder = a ValueHolder on: a CPointer {0F779080} (struct >> __sqlite3 * * ) >> Arguments: >> t1 = 'prova' >> Context PC = 51 >> >> ---------------------------------------------------------------------- >> SQLite3Connection(ExternalDatabaseConnection)>>connect >> Receiver: >> a SQLite3Connection >> Instance Variables: >> stateHolder = a ValueHolder on: #new >> traceStream = nil >> traceLevel = 0 >> participants = a WeakArray[0] >> participantsSemaphore = a RecursionLock >> transaction = a SQLite3Transaction >> username = 'prova' >> password = 'prova' >> environment = ':memory:' >> transactionCoordinator = a ValueHolder on: false >> cachedSession = nil >> isolationLevel = nil >> sqliteHolder = a ValueHolder on: a CPointer {0F779080} (struct >> __sqlite3 * * ) >> Context PC = 7 >> >> ---------------------------------------------------------------------- >> HopEXDIInterface>>connectOnDSN: >> Receiver: >> a HopEXDIInterface >> Instance Variables: >> xif = nil >> Arguments: >> aHOPDataSource = a HOPEXDISQLiteDataSource >> Temporaries: >> connection = a SQLite3Connection >> Context PC = 24 >> >> ---------------------------------------------------------------------- >> HopEXDISQLiteConnection(HOPConnection)>>connectOnDSN: >> Receiver: >> a HopEXDISQLiteConnection >> Instance Variables: >> handle = nil >> engine = nil >> isolationLevel = nil >> retriesNumber = 3 >> dataSourceName = nil >> name = nil >> forUpdate = nil >> transaction = nil >> ready = nil >> externalResource = nil >> readOnly = nil >> temporayTables = nil >> declaredCursors = an OrderedCollection[0] >> temporaryConnection = nil >> isTemporary = false >> Arguments: >> aDataSource = a HOPEXDISQLiteDataSource >> Context PC = 10 >> >> ---------------------------------------------------------------------- >> HopEXDISQLiteConnection class(HOPConnection class)>>connectOnDSN:withName: >> Receiver: >> a HopEXDISQLiteConnection class >> Instance Variables: >> superclass = HopEXDIConnection >> methodDict = a MethodDictionary[1] >> format = 16399 >> subclasses = nil >> instanceVariables = nil >> organization = ('subclassResponsibility' #statementForString:) >> >> name = #HopEXDISQLiteConnection >> classPool = a NameSpaceOfClass[0] >> environment = nil >> Arguments: >> aDataSource = a HOPEXDISQLiteDataSource >> aString = 'SQLITE' >> Context PC = 10 >> >> ---------------------------------------------------------------------- >> HOPEXDISQLiteDataSource>>getConnectionWithName: >> Receiver: >> a HOPEXDISQLiteDataSource >> Instance Variables: >> name = ':memory:' >> engine = #SQLite3 >> userId = 'prova' >> password = 'prova' >> handle = nil >> externalResource = nil >> tableOwner = ':memory:' >> attributeString = '' >> Arguments: >> aString = 'SQLITE' >> Context PC = 5 >> >> ---------------------------------------------------------------------- >> DbConnectionManager(HOPConnectionManager)>>buildConnection: >> onDSN:readOnly: >> Receiver: >> a DbConnectionManager >> Instance Variables: >> handlers = nil >> defaultDsn = a HOPEXDIDataSource >> defaultTemporaryDsn = a HOPEXDISQLiteDataSource >> openedConnections = a Dictionary[2] >> maxOpenConnections = 6 >> activeConnection = a HopEXDIConnection >> oldName = nil >> dbConnectionManagerProxy = nil >> Arguments: >> aString = 'SQLITE' >> anODBCDataSource = a HOPEXDISQLiteDataSource >> aBoolean = false >> Temporaries: >> connection = nil >> Context PC = 17 >> >> ---------------------------------------------------------------------- >> DbConnectionManager(HOPConnectionManager)>>openTemporaryConnection >> Receiver: >> a DbConnectionManager >> Instance Variables: >> handlers = nil >> defaultDsn = a HOPEXDIDataSource >> defaultTemporaryDsn = a HOPEXDISQLiteDataSource >> openedConnections = a Dictionary[2] >> maxOpenConnections = 6 >> activeConnection = a HopEXDIConnection >> oldName = nil >> dbConnectionManagerProxy = nil >> Temporaries: >> connection = nil >> Context PC = 18 >> >> ---------------------------------------------------------------------- >> DbConnectionManager(HOPConnectionManager)>>openTemporaryConn >> ectionIfNeeded >> Receiver: >> a DbConnectionManager >> Instance Variables: >> handlers = nil >> defaultDsn = a HOPEXDIDataSource >> defaultTemporaryDsn = a HOPEXDISQLiteDataSource >> openedConnections = a Dictionary[2] >> maxOpenConnections = 6 >> activeConnection = a HopEXDIConnection >> oldName = nil >> dbConnectionManagerProxy = nil >> Temporaries: >> newConnection = nil >> Context PC = 17 >> >> ---------------------------------------------------------------------- >> TemporaryTableManager>>deleteAndRecreateTemporaryTables: >> Receiver: >> a TemporaryTableManager >> Instance Variables: >> dB = nil >> Arguments: >> classCollection = an Array[10] >> Temporaries: >> translator = nil >> opened = nil >> eachClass = nil >> Context PC = 13 >> >> ---------------------------------------------------------------------- >> TemporaryTableManager>>createTemporaryTablesForBprenor >> Receiver: >> a TemporaryTableManager >> Instance Variables: >> dB = nil >> Context PC = 5 >> >> ---------------------------------------------------------------------- >> Bprenot1HorizontalForm>>onNonStdOne >> Receiver: >> a Bprenot1HorizontalForm >> Instance Variables: >> dependents = nil >> builder = an UIBuilder >> uiSession = nil >> eventHandlers = nil >> close = a ValueHolder on: false >> accept = a ValueHolder on: false >> cancel = a ValueHolder on: false >> preBuildBlock = nil >> postBuildBlock = nil >> postOpenBlock = nil >> escapeIsCancel = true >> parentView = nil >> regionPointer = 1 >> regionList = an OrderedCollection[15] >> dataPointer = 1 >> data = an ArturOC >> holdValue = an OrderedCollection[0] >> fullSpec = a FullSpec >> holdID = an OrderedCollection[150] >> headID = an OrderedCollection[11] >> headValue = an OrderedCollection[11] >> baseClass = a RturMaster >> objectsFromDB = an ArturOC >> buttonPointer = 9 >> methodDictionary = nil >> lookPreferences = an OrderedCollection[10] >> buttonNumber = nil >> scrollSpec = a FullSpec >> SPDown = 0 >> SPUp = 0 >> flag = 0 >> keyPress = false >> lineNumber = 1 >> position = 1 >> queriedResult = nil >> currentCharacter = nil >> final = an OrderedCollection[10] >> initial = an OrderedCollection[10] >> reference = an OrderedCollection[10] >> orderByFieldDictionary = a Dictionary[2] >> exceptionalHF = nil >> setDefaultClassDictionary = a Dictionary[1] >> scrollProcess = an OrderedCollection[0] >> counter = 24 >> scrollRate = (4730/329) >> masterWindow = a MasterWindow >> log = a Log >> scrollOrg = 784@88 >> scrollCor = 418 >> valueChanger = a ValueHolder on: 1 >> aTracer = nil >> dateValidator = a DateValidatorAndConverter >> aspects = an OrderedCollection[15] >> finishLine = true >> fieldSize = 10 >> scrollConstant = 329 >> oldPos = nil >> ab = false >> cursor = a JoinObjectCursor >> selectedApplication = nil >> companies = '' >> sharedCompanies = nil >> xfbax0_valido = an OrderedCollection[0] >> nonStandard = nil >> bprus_rif_num = nil >> bprtp_tpnu = nil >> bpren0_prif1fax = nil >> bpren0_prif2fax = nil >> bpren0_nurif1fax = nil >> bpren0_prif1mai = nil >> bpren0_prif2mai = nil >> bpren0_nurif1mai = nil >> bpren0_prif1fxo = nil >> bpren0_prif2fxo = nil >> bpren0_nurif1fxo = nil >> bpren0_prif1mao = nil >> bpren0_prif2mao = nil >> bpren0_nurif1mao = nil >> bpren0_nrec_tl1 = nil >> bpren0_nrec_tl2 = nil >> bpren0_codage_o = nil >> bpren0_tplpre_o = nil >> bpren0_cpaga_o = nil >> bpren0_impacc_o = nil >> bpren0_impacc = nil >> bpren0_imptot = nil >> bpren0_imptcee = nil >> bpren0_imptfcee = nil >> bpren0_imptmist = nil >> bpren0_imptn74t = nil >> bpren0_imptsv = nil >> bpren0_impiv = nil >> bpren0_impivcee = nil >> bpren0_impivfcee = nil >> bpren0_impivmist = nil >> bpren0_impivn74t = nil >> bpren0_impivsv = nil >> bpren0_costot = nil >> bpren0_costcee = nil >> bpren0_costfcee = nil >> bpren0_costmist = nil >> bpren0_costn74t = nil >> bpren0_costsv = nil >> bpren0_impcom = nil >> bpren0_imicocee = nil >> bpren0_imicofcee = nil >> bpren0_imicomist = nil >> bpren0_imicomn74t = nil >> bpren0_imicosv = nil >> bpren0_precanpen = nil >> bpren0_altrignor = nil >> bpren0_norm = nil >> bpren0_conf = nil >> bpren0_rich = nil >> bpren0_opzi = nil >> bpren0_can = nil >> bpren0_wlis = nil >> bpren0_prev = nil >> bpren0_dti_via = nil >> bpren0_dtf_via = nil >> bpren0_dt_scs = nil >> bpren0_trapre = nil >> bpren0_cee = nil >> bpren0_fcee = nil >> bpren0_misto = nil >> bpren0_n74t = nil >> bpren0_valido = nil >> bpren0_str1 = nil >> bpren0_durata = nil >> bpren0_dest = nil >> bprus0_rif_num = nil >> bprtp0_tpnu = nil >> bpren0_impsca = nil >> bpren0_accpag = nil >> bpren0_impaccpag = nil >> bpren0_dt_iniscp = nil >> bpren0_dtiniscac = nil >> bpren0_nrec = nil >> bpren0_nrec1 = nil >> bpren0_impsiacc = nil >> bpren0_impsinacc = nil >> bpren0_tpstp = nil >> bpren0_tp = nil >> bpren0_stp = nil >> bpren0_dt_sca = nil >> bpren0_amb = nil >> bpren0_cosdauti = nil >> bpren0_imptot1 = nil >> bpren0_tp_prod = nil >> bpren0_prod = nil >> bpren0_locg = nil >> bpren0_zona = nil >> bpren0_citta = nil >> bpren0_opus = nil >> bpren0_dt_agg = nil >> met03 = nil >> dict = nil >> character = nil >> bprenot002 = nil >> bpren0Stasub = nil >> bpren0Stacon1 = nil >> bpren0Stacon2 = nil >> bpren0Staprc = nil >> bprer0KNrec = nil >> bpren0Norm = nil >> bpren0Conf = nil >> bpren0Rich = nil >> bpren0Opzi = nil >> bpren0Canc = nil >> bpren0Wlis = nil >> bpren0Prev = nil >> bpren0DtScs = nil >> bpren0Precanpen = nil >> bpren0Altrignor = nil >> bprenStaprepen = nil >> bpren0Dtagg = nil >> bpren0DtiVia = nil >> bpren0DtfUti = nil >> bpren0DtfVia = nil >> bpren0Noco = nil >> mserviz = nil >> bprenor = nil >> supplierType = nil >> keyStatus = nil >> bprenot002Coll = nil >> prdsx = nil >> nor = nil >> priceModule = nil >> hasChange = nil >> bpren0_durataapp = nil >> myXXCOM = nil >> bookingPresent = nil >> bookingsHad = nil >> bpren0_costmcee = nil >> bpren0_costmfce = nil >> extObj = nil >> response = nil >> classeVarBprenot = nil >> bpren0_reglis = nil >> bpren0_reglis1 = nil >> bpren0_reglis2 = nil >> bpren0_reglis3 = nil >> bpren0_reglis4 = nil >> bpren0_reglis5 = nil >> bpren0_reglis6 = nil >> bpren0_reglis7 = nil >> bpren0_lisco_se = nil >> bpren0_lisri_se = nil >> bpren0_lisri_vi = nil >> bpren0_regpag = nil >> bpren0_regpag1 = nil >> bpren0_regpag2 = nil >> bpren0_regpag3 = nil >> bpren0_regpag4 = nil >> bpren0_regpag5 = nil >> bpren0_regpag6 = nil >> bpren0_regpag7 = nil >> bpren0_regpagsw = nil >> bpren0_cpaga = nil >> proceedCambio = nil >> realActivationQuery = nil >> selectedQuery = nil >> bprenocObject = nil >> bpren0_impcom2 = nil >> bpren0_impcom3 = nil >> bpren0_sw = nil >> initialDepartureDate = nil >> oldPayment = nil >> bpren0_lisri_se2 = nil >> bpren0_lisri_vi2 = nil >> Temporaries: >> anObject = nil >> query = nil >> commonSelect = nil >> doneBookings = nil >> Context PC = 6 >> >> ---------------------------------------------------------------------- >> RturMaster>>onNonStdOne >> Receiver: >> a RturMaster >> Instance Variables: >> dependents = a RturWindow 35651727 >> builder = an UIBuilder >> uiSession = a ControlManager >> eventHandlers = nil >> textError = an ArturMsgHolder on: '' >> masterWindow = a MasterWindow >> buttonWidgets = an OrderedCollection[14] >> functionWidgets = an OrderedCollection[8] >> labels = an OrderedCollection[8] >> formBuilder = nil >> specCollection = an OrderedCollection[2] >> buttonBuilder = an UIBuilder >> user = a Xutenti0 (readFromDB) >> company = a Xaziend0 (readFromDB) >> modelClass = nil >> clockProcess = a Process in Semaphore>>wait >> dataType = nil >> formName = nil >> arturMessage = an ArturMessages >> log = a Log >> allowKeyPress = true >> xxabuAbilitaz = '5' >> readOnlyFields = an OrderedCollection[0] >> invisibleFields = an OrderedCollection[0] >> currentPassword = nil >> receivePassword = nil >> preCheckingFields = a Dictionary[0] >> temporary = a TemporaryTableManager >> messageLock = false >> processMonitor = an AbstractProcessMonitor in nil >> processor = a Bprenot1HorizontalForm >> modeSelection = a Dictionary[7] >> defaultConnection = nil >> xanatabs = an OrderedCollection[0] >> xaziecos = an OrderedCollection[2] >> mirSourceDir = nil >> vf14 = nil >> itaengDays = a Dictionary[7] >> agency = nil >> posObject = nil >> xfunbasx = a Xfunbasx >> Context PC = 19 >> >> ---------------------------------------------------------------------- >> optimized [] in ApplicationModel>>actionFor: >> Receiver: >> an UndefinedObject >> Temporaries: >> .super = a RturMaster >> .aKey = #onNonStdOne >> Context PC = 7 >> >> ---------------------------------------------------------------------- >> optimized [] in ActionButtonSpec>>typeConvert: >> Receiver: >> an UndefinedObject >> Arguments: >> b = a ValueHolder on: nil >> v = true >> Temporaries: >> .aValue = BlockClosure [] in ApplicationModel>>actionFor: >> Context PC = 5 >> >> ---------------------------------------------------------------------- >> PluggableAdaptor>>setValue: >> Receiver: >> a PluggableAdaptor >> Instance Variables: >> dependents = a Win95ActionButtonView >> model = a ValueHolder on: nil >> getBlock = BlockClosure [] in ActionButtonSpec>>typeConvert: >> putBlock = BlockClosure [] in ActionButtonSpec>>typeConvert: >> updateBlock = BlockClosure [] in ActionButtonSpec>>typeConvert: >> Arguments: >> newValue = true >> Context PC = 6 >> >> ---------------------------------------------------------------------- >> PluggableAdaptor(ValueModel)>>value: >> Receiver: >> a PluggableAdaptor >> Instance Variables: >> dependents = a Win95ActionButtonView >> model = a ValueHolder on: nil >> getBlock = BlockClosure [] in ActionButtonSpec>>typeConvert: >> putBlock = BlockClosure [] in ActionButtonSpec>>typeConvert: >> updateBlock = BlockClosure [] in ActionButtonSpec>>typeConvert: >> Arguments: >> newValue = true >> Context PC = 5 >> >> ---------------------------------------------------------------------- >> WinXPTriggerButtonController(TriggerButtonController)>>pressAction >> Receiver: >> a WinXPTriggerButtonController >> Instance Variables: >> model = a PluggableAdaptor >> view = a Win95ActionButtonView >> sensor = a TranslatingSensor >> keyboardProcessor = nil >> keyboardHook = nil >> dispatcher = nil >> Context PC = 17 >> >> ---------------------------------------------------------------------- >> TriggerButtonTracker(BasicButtonTracker)>>finishSelectionFor: >> Receiver: >> a TriggerButtonTracker >> Instance Variables: >> controller = a WinXPTriggerButtonController >> inside = true >> Arguments: >> aPoint = 17@7 >> Context PC = 8 >> >> ---------------------------------------------------------------------- >> TriggerButtonTracker>>finishSelectionFor: >> Receiver: >> a TriggerButtonTracker >> Instance Variables: >> controller = a WinXPTriggerButtonController >> inside = true >> Arguments: >> aPoint = 17@7 >> Context PC = 11 >> >> ---------------------------------------------------------------------- >> TriggerButtonTracker(SelectionTracker)>>redButtonReleasedEvent: >> Receiver: >> a TriggerButtonTracker >> Instance Variables: >> controller = a WinXPTriggerButtonController >> inside = true >> Arguments: >> aMouseButtonEvent = a RedButtonReleasedEvent >> Context PC = 13 >> >> ---------------------------------------------------------------------- >> RedButtonReleasedEvent>>dispatchTo: >> Receiver: >> a RedButtonReleasedEvent >> Instance Variables: >> time = 2338405450 <02338%2040-5450> >> initiator = an EventDispatcher >> window = a RturWindow 35651727 >> state = 0 >> x = 536 >> y = 34 >> gx = 537 >> gy = 91 >> buttonNumber = 1 >> Arguments: >> anObject = a TriggerButtonTracker >> Context PC = 4 >> >> ---------------------------------------------------------------------- >> TriggerButtonTracker(SelectionTracker)>>handleEvent: >> Receiver: >> a TriggerButtonTracker >> Instance Variables: >> controller = a WinXPTriggerButtonController >> inside = true >> Arguments: >> anEvent = a RedButtonReleasedEvent >> Context PC = 4 >> >> ---------------------------------------------------------------------- >> EventDispatcher>>dispatch:to: >> Receiver: >> an EventDispatcher >> Instance Variables: >> windowController = an ApplicationStandardSystemController >> currentMouseConsumer = nil >> grabbingMouse = false >> keyboardProcessor = a KeyboardProcessor >> lastControlObject = a RturClickWidgetController >> trapList = nil >> state = nil >> repairDamageWhenDebugging = true >> flushQueueAfterError = true >> distributeEventsWhenDebugging = true >> dragDropInProgress = false >> dragDropTracker = nil >> dispatchUnknownEvents = false >> Arguments: >> event = a RedButtonReleasedEvent >> object = a TriggerButtonTracker >> Temporaries: >> tmp = nil >> Context PC = 10 >> >> ---------------------------------------------------------------------- >> EventDispatcher>>dispatchEvent: >> Receiver: >> an EventDispatcher >> Instance Variables: >> windowController = an ApplicationStandardSystemController >> currentMouseConsumer = nil >> grabbingMouse = false >> keyboardProcessor = a KeyboardProcessor >> lastControlObject = a RturClickWidgetController >> trapList = nil >> state = nil >> repairDamageWhenDebugging = true >> flushQueueAfterError = true >> distributeEventsWhenDebugging = true >> dragDropInProgress = false >> dragDropTracker = nil >> dispatchUnknownEvents = false >> Arguments: >> event = a RedButtonReleasedEvent >> Temporaries: >> objectWantingControl = nil >> targetKeyboardProcessor = nil >> Context PC = 60 >> >> ---------------------------------------------------------------------- >> RedButtonReleasedEvent(Event)>>dispatch >> Receiver: >> a RedButtonReleasedEvent >> Instance Variables: >> time = 2338405450 <02338%2040-5450> >> initiator = an EventDispatcher >> window = a RturWindow 35651727 >> state = 0 >> x = 536 >> y = 34 >> gx = 537 >> gy = 91 >> buttonNumber = 1 >> Context PC = 16 >> >> ---------------------------------------------------------------------- >> RedButtonReleasedEvent(Event)>>dispatchForWindowManager: >> Receiver: >> a RedButtonReleasedEvent >> Instance Variables: >> time = 2338405450 <02338%2040-5450> >> initiator = an EventDispatcher >> window = a RturWindow 35651727 >> state = 0 >> x = 536 >> y = 34 >> gx = 537 >> gy = 91 >> buttonNumber = 1 >> Arguments: >> aWinMgr = a WindowManager >> Context PC = 4 >> >> ---------------------------------------------------------------------- >> optimized [] in WindowManager>>safelyDispatchForWindowManager: >> Receiver: >> an UndefinedObject >> Temporaries: >> .event = a RedButtonReleasedEvent >> .super = a WindowManager >> Context PC = 6 >> >> ---------------------------------------------------------------------- >> BlockClosure>>on:do: >> Receiver: >> a BlockClosure >> Instance Variables: >> method = CompiledBlock [] in WindowManager>>safelyDispatchF >> orWindowManager: >> outerContext = nil >> copiedValues = an Array[2] >> Arguments: >> anExceptionSelector = BadControllerError >> handlerBlock = BlockClosure [] in WindowManager>>safelyDispatchF >> orWindowManager: >> Context PC = 18 >> >> ---------------------------------------------------------------------- >> WindowManager>>safelyDispatchForWindowManager: >> Receiver: >> a WindowManager >> Instance Variables: >> windows = an OrderedCollection[1] >> activeController = nil >> interruptLock = false >> outstandingMetaOrDamage = true >> openInProgress = false >> eventQueue = an EventQueue >> baseProcess = a Process in Semaphore>>wait >> dontFilterEvents = false >> Arguments: >> event = a RedButtonReleasedEvent >> Context PC = 13 >> >> ---------------------------------------------------------------------- >> WindowManager>>processNextEvent >> Receiver: >> a WindowManager >> Instance Variables: >> windows = an OrderedCollection[1] >> activeController = nil >> interruptLock = false >> outstandingMetaOrDamage = true >> openInProgress = false >> eventQueue = an EventQueue >> baseProcess = a Process in Semaphore>>wait >> dontFilterEvents = false >> Temporaries: >> event = a RedButtonReleasedEvent >> Context PC = 9 >> >> ---------------------------------------------------------------------- >> optimized [] in [] in WindowManager>>newProcess >> Receiver: >> an UndefinedObject >> Temporaries: >> .super = a WindowManager >> Context PC = 13 >> >> ---------------------------------------------------------------------- >> BlockClosure>>on:do: >> Receiver: >> a BlockClosure >> Instance Variables: >> method = CompiledBlock [] in [] in WindowManager>>newProcess >> outerContext = nil >> copiedValues = a WindowManager >> Arguments: >> anExceptionSelector = TerminateException >> handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess >> Context PC = 18 >> >> ---------------------------------------------------------------------- >> optimized [] in WindowManager>>newProcess >> Receiver: >> an UndefinedObject >> Temporaries: >> .super = a WindowManager >> Context PC = 15 >> >> ---------------------------------------------------------------------- >> BlockClosure>>on:do: >> Receiver: >> a BlockClosure >> Instance Variables: >> method = CompiledBlock [] in WindowManager>>newProcess >> outerContext = nil >> copiedValues = a WindowManager >> Arguments: >> anExceptionSelector = TerminateException >> handlerBlock = BlockClosure [] in [] in Process >> class>>forBlock:priority: >> Context PC = 18 >> >> ---------------------------------------------------------------------- >> optimized [] in Process class>>forBlock:priority: >> Receiver: >> an UndefinedObject >> Temporaries: >> .aBlock = BlockClosure [] in WindowManager>>newProcess >> Context PC = 9 >> >> >> El 14/09/2017 a las 17:53, Andres Valloud escribió: >> >> Anda a MSDN y fijate que hace LoadLibrary()... >> >> On Sep 14, 2017 1:44 PM, "Smalltalk" <[email protected]> wrote: >> >>> Hola, >>> Estoy trabajando con Visual Works 7.6 y esto teniendo el siguiente >>> problema al cargar una libreria (ExternalLibrary>>load): >>> >>> a SystemError(#'generic error','libsqlite3.so.0: cannot open shared >>> object file: No such file or directory') >>> >>> El mensaje es claro pero estoy tratanto (dentro del debugger) de >>> obtener el path completo del archivo/directorio pero no puedo obtenerlo. >>> >>> Alguna idea de como obtener el path completo ? >>> >>> (la libreria la tengo copiada en el mismo directorio de la imagen pero >>> se ve que va a buscar a otro lado) >>> >>> saludos >>> >>> bruno >>> >>> >>> --- >>> El software de antivirus Avast ha analizado este correo electrónico en >>> busca de virus. >>> https://www.avast.com/antivirus >>> >>> -- >>> -- >>> To post to this group, send email to [email protected] >>> To unsubscribe from this group, send email to >>> [email protected] >>> >>> http://www.clubSmalltalk.org >>> --- Has recibido este mensaje porque estás suscrito al grupo >>> "ClubSmalltalk" de Grupos de Google. >>> Para cancelar la suscripción a este grupo y dejar de recibir sus >>> mensajes, envía un correo electrónico a clubsmalltalk+unsubscribe@goog >>> legroups.com. >>> Para obtener más opciones, visita https://groups.google.com/d/optout. >>> >> -- >> -- >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> >> http://www.clubSmalltalk.org >> --- >> Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" >> de Grupos de Google. >> Para cancelar la suscripción a este grupo y dejar de recibir sus >> mensajes, envía un correo electrónico a clubsmalltalk+unsubscribe@goog >> legroups.com. >> Para acceder a más opciones, visita https://groups.google.com/d/optout. >> >> >> >> >> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> >> Libre >> de virus. www.avast.com >> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> >> <#m_-2281113494619406247_m_-8373411164146507461_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> >> >> -- >> -- >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> >> http://www.clubSmalltalk.org >> --- >> Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" >> de Grupos de Google. >> Para cancelar la suscripción a este grupo y dejar de recibir sus >> mensajes, envía un correo electrónico a clubsmalltalk+unsubscribe@goog >> legroups.com. >> Para acceder a más opciones, visita https://groups.google.com/d/optout. >> > > -- > -- > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to clubSmalltalk+unsubscribe@ > googlegroups.com > > http://www.clubSmalltalk.org > --- > Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" > de Grupos de Google. > Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, > envía un correo electrónico a [email protected]. > Para acceder a más opciones, visita https://groups.google.com/d/optout. > -- -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a [email protected]. Para obtener más opciones, visita https://groups.google.com/d/optout.
